miranda ng история сообщений
Релиз Miranda NG
Сегодня я хочу рассказать вам о выходе второго stable-релиза IM-мессенджера Miranda NG, форка Miranda IM, созданного бывшими разработчиками ядра и ряда плагинов.
Веб-сайт и вики сейчас находятся в стадии активной разработки и наполнения контентом, впереди еще много работы, но команда полна идей и энтузиазма, так что не судите строго.
История, отличия и другая информация под катом.
Зачем понадобилось делать форк?
К весне 2012 года в разработке Miranda IM сложилась патовая ситуация, так как принятая (и по сегодняшний день существующая) модель разработки Миранды оказалась полностью нежизнеспособной по следующим причинам:
К тому же, сложился четко созревший конфликт между двумя оставшимися на тот момент активными разработчиками Миранды: Георгием Хазаном (ghazan) и Борисом Красновским (borkra), последней каплей которого стал откат Борисом фикса для совершенной им ошибки под тем предлогом, что в комментарии к коммиту был употреблен английское причастие “borkred”, изобретенное для сломанных им частей миранды одним из участников проекта (не Георгием).
В результате всего этого в начале апреля 2012 тогдашний куратор ядра Miranda IM Георгий Хазан принял решение покинуть проект, несмотря на наличие множества очевидных направлений развития Миранды.
Т.о. 15 мая 2012 года исходный код ядра Миранды был залит в отдельный репозиторий, со временем в него было добавлено больше сотни плагинов. В последующем в исходные тексты было внесено более полутора тысяч изменений, после чего 30 августа 2012 года был выпущен первый релиз Miranda NG.
Сейчас в проекте зарегистрированы 15 человек, из них минимум половина активно участвуют в разработке.
Что нового?
Была произведена практически полная ревизия кода как ядра, так и портированных плагинов (основная их часть выбиралась по принципу частоты использования и популярности на сайте www.miranda-vi.org). Однозначно исключались плагины, для которых не существовало актуального исходного кода., поэтому нет смысла описывать все мелкие изменения и багфиксы, с полным changelog’ом проще всего ознакомиться в svn.
В этой статье я перечислю лишь основные и принципиальные изменения.
Главные преимущества (на данный момент) Miranda NG перед Miranda IM
Особенности и отличия Miranda NG
Как “переехать” на Miranda NG с Miranda IM?
Нет ничего проще: достаточно лишь “подложить” старый профиль к Miranda NG (сохранив, конечно же, структуру папок) или заменить все плагины и ядро (не забыв про папку Core и библиотеку mir_core.dll в корне) на новые с сайта проекта.
Все старые настройки, внешний вид, история контактов и т.д. останутся нетронутыми и прежними. Профили IM и NG полностью совместимы.
Какие планы на будущее?
На все вопросы и замечания команда всегда готова ответить на форуме и jabber-конференции xmpp:miranda-ng@conference.jabber.ru.
За подготовку материала — огромное спасибо Георгию Хазану (ghazan).
Database editor++
| Database editor++ | |
|---|---|
| Имя файла | DbEditorPP.dll |
| Авторы | Bio, Jonathan Gordon |
| Скачать | |
| Стабильная версия: | 32-bit, 64-bit |
| Версия в разработке: | 32-bit, 64-bit |
Редактор базы данных Miranda NG.
Назначение
Миранда хранит настройки ядра и всех плагинов в собственной базе данных (файл с расширением .dat в папке, где установлена Миранда, либо в профиле пользователя системы). База выполняет для Миранды те же функции, что и реестр для Windows и большинства приложений. Преимущества отдельной базы: переносимость (портабильность) программы и простота создания резервных копий профиля. При этом нет необходимости копировать настройки из реестра или что-либо переустанавливать — в файле профиля хранится всё: и настройки, и контакты, а также история сообщений.
Настройки в базе бывают двух типов: глобальные и для отдельно взятого контакта. С помощью данного редактора можно изменять и те, и другие:
Database Editor не предназначен для просмотра/правки сообщений.
Этот плагин потребуется вам для изменения некоторых настроек Миранды, так как не все они выводятся в диалогах настроек. Необходимо понимать, что использование таких настроек обычно не поддерживается официально и может привести к дополнительным эффектам.
Использование
Открыть редактор базы можно:
Пользуются редактором базы так же, как и редактором реестра Windows. В левой панели редактора находится дерево настроек. Раздел «Настройки» состоит из подразделов, называемых также «ветками модулей». Щелчок по ветке выводит в правой панели все настройки данного модуля. В каждой ветке собраны настройки какого-либо плагина, протокола или группы функций. В отличие от реестра Windows ветки модулей в базе Миранды не имеют подразделов. Иерархия одноуровневая: «Модуль → Настройка».
Для изменения скрытых настроек плагина TabSRMM редактируйте только глобальные настройки. Не задавайте параметрам недокументированные значения — это всё равно что наугад изменять значения в реестре Windows. Неправильное изменение параметров базы может привести к серьезным неполадкам в работе Миранды. Поэтому редактируйте только те настройки, назначение которых вам известно.
Не изменяйте настройки контактов, если вы не уверены в своих действиях.
Openfire + Miranda NG. Удаленная помощь в один клик и еще пара фич
Эта статья — ремейк нескольких старых заметок о том, как, используя миранду, упростить регулярные задачи по саппорту пользователей. В статье вы не встретите 1001ый хау ту по установке Openfire на linux со сквозной аутентификацией, зато будет описано что делает:
И как, используя эту фигню, получить удаленный доступ к пользовательскому рабочему столу, например, средствами того же VNC или radmin, просто кликнув по нужному значку прямо в окне беседы с пользователем.
Исходные данные: Debian 7, Openfire 4.1.3, Miranda NG 0.95.5.
Целью же в примере будет автоматический запуск удаленного помощника (msra) с подключением к нужному пользователю прямо из интерфейса миранды. Сразу оговорюсь, что все учетные данные для доступа при необходимости вы должны будете ввести дополнительно, т.е. на безопасность эти трюки никак не влияют.
Итак, Openfire на дебиане уже настроен, а Miranda NG из коробки с тычкой «доменный логин» и без твиков реестра цепляется к серверу без ввода учетных данных. Также указано использовать имя комьютера в качестве ресурса. От нас требуется взять стоковую миранду и допилить в ней некий «админский» функционал. Для упрощения я так и буду называть сборки: админская и юзерская. Обращаю внимание, что в качестве пользовательской подойдет любая другая. Главное, чтобы где-то в поле MirVer присутствовало поле «ресурс», а в качестве ресурса выступало имя компьютера, но об этом ниже. Удаленный помощник уже должен работать. Повторяю, миранда в нашем случае просто удобный интерфейс-надстройка.
Первым делом качаем текущий (на момент написания 0.95.5) стейбл Miranda NG, а также нужные плагины: Actman и Variables. Это минимально необходимые, но в свей сборке я покажу и несколько других, с которыми жить становится веселей. Складываем плагины в папку Plugins, перезапускаем миранду, а теперь по пунктам.
1) Основное окно для работы с кастомными действиями внутри миранды это — Настройки → Службы → Действия → Действия. Верхним зеленым плюсом создаем новый скрипт (F2 для переименования), а нижним добавим к нему Действие «Выполнить» (выбрать справа вверху).
2) Для запуска удаленного помощника надо выполнить msra /offerra имя_компьютера. Дейстиве «Выполнить» содержит 2 поля — путь и аргументы. Первое — это стандартный путь.
а во втором требуется указать, что мы сразу хотим подключиться к указанной станции, передав в качестве последнего аргумента распарсенное имя кампа из поля MirVer конкретного юзера. В текущей Miranda NG «MirVer» принимает значение.
И мы договорились, что в роли ресурса выступает имя компьютера. Здесь и далее в роли примера ресурс будет WS01. Заметьте, что второе поле должно быть отмечено как скрипт (кнопка S, см. скрин выше), иначе магия переменных не сработает.
3) Добраться до хелпа «Помощь по переменным» можно либо из Настройки — Службы → Переменные → синяя кнопка V, либо тот же значок V по нажатию на кнопки S/T прямо из диалога «Действия».
В свойствах контакта значение MirVer выглядит как Miranda NG Jabber 0.95.5.17337 x86 [WS01]. Смысл в том, чтобы найти вхождения «Miranda NG Jabber 0.95.5.17337 x86 [» и «]«, заменить их на пустую строку и на выходе получить только WS01. Код для параметра командной строки и поиска имени:
Учтите, что, нажав на кнопки S|T, вы попадете в «текстовый редактор», в котором допускаются переносы строк, а результат все равно будет записан в одну строку. Только не забывайте о пробелах там, где нужно и где не нужно.
?replace(x,y,z. ) — замена всех вхождений Y в X на Z, возможны множественные аргументы Y и Z.
Тут все понятно. Ищем в MirVer пару нужных указанных выше вхождений и меняем на «пусто». Но как получить MirVer нужного контакта? Нам поможет:
?dbsettings(x,y,z,w) — получить настройку Z плагина Y контакта X или возвратить W, если z не существует (w не обязательно).
Теперь надо узнать значения плагина jabber для Y(ведь мы по джабберу и общаемся) у выбранного контакта:
4) Предпоследним шагом идем в Настойки → Службы → Действия → Использование действий и отмечаем, где хотим видеть кнопку удаленного помощника. В моем случае это панель кнопок в окне сообщений при непосредственной переписке с юзером и по правой кнопке на контакте в ростере.
На этом с удаленным помощником всё, проверяйте, как работает. Можно потренироваться с парой других утилит:
Оснастка управление компьютером
Не забывайте, что сторонний софт вроде UltraVNC должен быть установлен в системе.
Вроде все классно. Но как быть, если клиент сидит в другой подсети, да и вообще имеет свой DNS-суффикс? Вопрос по доступу к нужной подсети оставим на откуп шлюза, а вот с суффиксом сложнее, ведь в имени ресурса ничего нет о DNS, и достучаться до юзера в другом городе по одному лишь имени уже не выйдет, нужен весь FQDN. К счастью, миранда с плагинами Actman и Variables настолько крута, что решение есть. Сейчас в двух словах расскажу как, а для удобства восприятия отформатировал код:
Общий смысл тут в том, чтобы в зависимости от группы ростера, в которой находится пользователь, дописывать соответствующий DNS-суффикс. В примере используется три группы: Юпитер (.jup.com), Марс (.mars.com), Венера (.venus.com), а также Земля (.earth.com), если юзер не принадлежит ни к одной из указанных групп.
1) Первая строка служит для поиска имени компьютера, это мы проходили с одной лишь только разницей, что теперь с помощью ?puts() пишем имя компьютера в переменную comp
2) с помощью вложенных операторов ?if() ищем соответствие группам, вдруг юзер в одной из них
Если не с Юпитера, то выполняется следующий блок сравнения и по аналогии еще один. В итоге, если пользователь не найден на трех искомых планетах, то по умолчанию считаем, что он с Земли и присваиваем переменной grp значение .earth.com.
3) Финальный оператор ?insert() через ?get()`ы склеивает имя компьютера с именем домена, в итоге получаем искомый FQDN
?insert() — хак для вывода получившегося значения, так как никакого echo и прочих не предусмотрено.
Естественно, количество вложенных операторов может быть другим, в зависимости от вашей необходимости.
Выкладываю готовую юзерскую сборку со своими настройками и дополнительными плагинами, с которыми работа в миранде становится удобнее. Обращаю внимание, что к стоковой Miranda NG добавлены только плагины, смайлики и еще пара мелочей, остальное подкручено через Настройки. Упор делал на минимальные изменения чистой миранды. Юзерская сборка закастомизирована сильнее, т.к. требуется включить или отключить кучу всего, что юзер потом сам не сделает, а компетентный сотрудник в админской сборке разберется сам.
UPD: Админская сборка по просьбе в комментариях. Отличия от юзерской:
1) Добавлено три плагина: ActMan, Variables, DbEditorPP
2) Добавлен удаленный помощник
3) Переименован каталог профиля и убран лаунчер
Сознательно не даю линк на админскую сборку, т.к. она у меня сильно изменена от оригинала и вычищать от всего будет муторно. Правильно будет добавить в юзерскую версию пару плагинов и скопипастить пару строк из примеров. Но если надо, скажите, выложу.
Под конец обещанная пара фичей
У миранды, ввиду особенности архитектуры, есть сложности с обновлением при использовании в корпоративной среде. Обновлением занимается PluginUpdater, у которого просто не хватит прав, чтобы записать что-то в ProgramFiles, где установлена миранда. Вариант, когда у юзера есть права на запись в каталог установки, не рассматривается. В итоге, имеем схему, по которой сама Miranda NG разворачивается в %ProgramFiles%, а профиль пользователя лежит в православно верном %ApplicationData%. Как уже говорил, особенностью является то, что настройки хоть и лежат в профиле пользователя, но сильно завязаны на версии ядра и плагинов, в итоге если просто поверх накатить новый билд, то есть неиллюзорный шанс, что всё сломается. Варианта два: не обновлять вообще ничего или обновлять, но пересоздавать юзеру профиль миранды. Оба варианта плохие. В одном случае страдает безопасность, во втором юзер теряет историю, что тоже фейл. И если с первым всё понятно, то над обновлением остановлюсь подробно.
Я отказался от штатного установщика миранды, который представляет собой Inno Setup, в пользу кастомного скрипта копирования собственной сборки. Объясню почему. Весь обязательный софт разворачивается средствами WSUS через LUP (WPP), но в случае с мирандой иногда, особенно на этапе тестирования, требуется часто обновлять тестовой группе пользователей сборку, а профиль с настройками в любом случае останется старый, т.е. нужно допиливать еще и его. Короче, решил поступить проще. Скрипт развертывания смотрит версию миранды на сервере, и если она больше чем установленная в системе, то тупо грохает её и записывает новую. Ini-файл с версией лежит тут MirandaNGCorpMod\Profiles\jabber\profile_settings.ini. Далее, кастомный лаунчер, с помощью которого запускается миранда, смотрит в каталог установки и, если версия новее, чем в профиле юзера, то грохает профиль и запускает миранду. Миранда уже сама с помощью setting-cln.ini при отсутствующем профиле создает новый с нужными настройками. Вообще, все настройки, отличающиеся от дефолта, вынесены settings.ini, а в Mirandaboot.ini об этом сказано. Далее лаунчер ждет еще пару секунд и записывает новую версию в каталог профиля (на всякий случай плюсом делается 12 попыток с шагом 5 секунд).
Скрипт развертывания должен лежать рядом с каталогом миранды, лаунчер — в каталоге рядом с miranda32.exe
Если будут нужны собранные версии, скажите, выложу.
В сборках требуется задействовать автоподключение при старте Настройки → Статус → Начальный статус → Профили статусов → в окошке Статус указать «В сети» и поменять параметр LoginServer на свой сервер джаббера. Это можно сделать через настройки миранды или редактированием файла setting-cln.ini. Ну и до кучи можете поменять или убрать вообще заставку на старте.
На этом по миранде вроде бы и всё, но не могу удержаться и не включить подсказку, как прикрутить фото пользователей из ActiveDitectoty:
Оговорюсь, версия схемы не ниже Win2008R2.
1)Включить реплику в GC для аттрибута thumbnailPhoto (не обязательно, но стоит)
windowsitpro.com/active-directory/q-how-can-i-add-pictures-my-users-active-directory-ad
Можно по этой же ссылке добавлять через PS, но неудобно, забейте на PS, едем дальше:
2) Скачать и поставить софтину для заливки фоточек в AD www.codetwo.com/freeware/active-directory-photos Бесплатная, ставить можно куда угодно, но запускать с правами админа домена.
3) В консоли OpenFire покрутить параметры:
ldap.override.avatar true
и отредактировать параметр в vCard чтобы было так:
4) Перезапуск OpenFire и MirandaNG видит аватары из коробки, но юзер хоть раз должен подключиться к джабберу.
Ну теперь точно всё. надеюсь, статья окажется полезной, и добро пожаловать в комментарии.
