Expected kind of OpenSSL::SSL::SSLContext в Redmine

При установке нового redmine 2.3.0 и дальнейшей его конфигурации возникает ошибка при отправке почты:

(Expected kind of OpenSSL::SSL::SSLContext))

Лечится эта ошибка добавлением параметра enable_starttls_auto: false в redmine/config/configuration.yml.  Пример:

production:
email_delivery:
delivery_method: :smtp
smtp_settings:
address: "smtp.yandex.ru"
port: 25
authentication: :plain
domain: 'yandex.ru'
user_name: '[email protected]'
password: 'somepass'
enable_starttls_auto: false

Для версий redmine, начинающихся ниже 2.3 параметр будет openssl_verify_mode ‘none’. Не забываем перезапустить redmine.

Получение почты и создание тикетов в Redmine

Появилась недавно небольшая задачка, которая позволяет создавать / отвечать на тикеты в Redmine через email. Получение почты можно организовать как по протоколу pop3, так и через IMAP. В моем случае доступ к почтовому серверу осуществлялся через IMAP Google Apps.

Не будем вдаваться в детали, а сразу перейдем к команде на получение почты. И установки ее в планировщике Linux cron. Итак, откроем консоль и попробуем дать команду от пользователя redmine(или root, главное чтобы права были)

rake -f /usr/local/share/redmine/Rakefile --silent redmine:email:receive_imap RAILS_ENV="production" host=imap.gmail.com [email protected] password=PwdToEmail ssl=SSL port=993 project=mail allow_override=tracker,priority,project

Если никаких ошибок не вывалилось, то добавим в планировщик выполнение команды на получение почты.  Открываем /etc/crontab и прописываем:

*  *    * * *   root    rake -f /usr/local/share/redmine/Rakefile --silent redmine:email:receive_imap RAILS_ENV="production" host=imap.gmail.com [email protected] password=YOUR_PASSWORD ssl=SSL port=993 project=mail allow_override=tracker,priority,project

Сохраняем файл. У меня redmine настроен так, что уведомления приходят от [email protected], поэтому отвечая на письмо с новым или измененным тикетом, я получаю автоматический ответ в redmine.

В redmine я создал новый проект «Почта» с Идентификатором mail, и если явно не указать в письме project, то задача попадает в этот проект.

Пример письма:

This is a new issue that overrides a few attributes
[...]
Project: foo
Tracker: Bug
Priority: Urgent
Status: Resolved

Лечим кодировку при экспорте CSV в Redmine

redmineПоставил недавно последний Redmine 2.x. Обнаружилось что при экспорте в формат CSV неверно отображаются русские символы. Поэтому в нем хочу добавить простенькое решение. Итак, открываем файл ru.yml. У меня он находится по пути:

/usr/local/share/redmine/config/locales/ru.yml

Ищем строку с параметром general_csv_encoding и меняем значение с UTF-8 на WINDOWS-1251:

# Было
general_csv_encoding: UTF-8

# Стало
general_csv_encoding: WINDOWS-1251

Перезапускаем Redmine.

UPD От пользователя Bozo: «Экспорт в csv происходит нормально, но в utf без bom. А глупые мс-продукты при виде utf без bom сходят с ума. Так что нужно всего лишь добавлять bom к созданному csv-файлу. Это можно реализовать микро-плагином за 10 минут.»

Плагин от Bozo:

require_dependency ‘queries_helper’

module BOMFixQueriesHelperPatch
def self.included(base)
base.send(:include, InstanceMethods)

base.class_eval do
alias_method_chain :query_to_csv, :fixed_bom
end
end

module InstanceMethods

# adds bom symbols to utf-encoded csv file
def query_to_csv_with_fixed_bom *args
ret = query_to_csv_without_fixed_bom *args
if l(:general_csv_encoding) == ‘UTF-8′
ret = “\xef\xbb\xbf”+ret
end
ret
end

end
end

Знаки вопроса в redmine

После установки свеженького redmine обнаружилась проблема с отображением русских символов. Вместо них были только знаки вопроса. Для решения данной проблемы опишем небольшой скрипт на bash, естественно предварительно забекапив базу:

#!/bin/sh
mysqldump -u root -ppassword --default-character-set=latin1 -c --insert-ignore \
--skip-set-charset redmine > dev.db
for i in dev; do iconv -f ISO-8859-1 -t UTF-8 <$i.db >${i}8.db; done

for i in *8.db; do perl -pi -w -e 's/CHARSET=latin1/CHARSET=utf8/g;' $i; done

for i in redmine; do \
  mysql --user=root -ppassword --execute "DROP DATABASE $i; CREATE DATABASE $i \
  CHARACTER SET utf8 COLLATE utf8_general_ci;"; \
done

mysql --user=root -ppassword --max_allowed_packet=16M --default-character-set=utf8 \
  redmine < dev8.db

Если это не помогло, то необходимо произвести настройку на стороне сервера. Открываем файл /etc/mysql/my.cnf и сравниваем с моим: (далее…)

Интеграция redmine с LDAP (Active Directory)

Процесс интеграции redmine с LDAP довольно прост. Состоит он из 2 этапов. Для начала создайте пользователя в своем домене, например redmine. Далее заходим на вкладку Администрирование->Авторизация с помощью LDAP и нажимаем ссылку  Новый режим аутентификации. После этого вводим следующие настройки:

Имя mydomain
Компьютер IP-адрес вашего домен контроллера
Порт 389
Учётная запись mydomain\redmine
Пароль пароль
BaseDN DC=mydomain, DC=loc
Создание пользователя на лету ставим галку
Пользователь sAMAccountName
Имя givenName
Фамилия sN
Email mail

Протестируйте настройки и если все прошло удачно, то можно авторизоваться под любым пользователем домен контроллера