Архив

Архив раздела ‘Сисадмину’

Рамблер-Контакты

24 Ноябрь 2011

Рамблер-Контакты (окна программы)Пропустил новость, что в июле 2011 года появился новый IM-клиент "Рамблер-Контакты". Поддерживает протоколы Jabber, MMP (Mail.ru Agent), GoogleTalk, ICQ, умеет подключаться к FaceBook, вКонтакте, Яндекс.Онлайн и QIP. Сейчас (в ноябре 2011) всё ещё в статусе бета, оно и понятно,- при установке ругается на отсутствие прав, показывает какие-то каракули, однако устанавливается. После установки пытается запуститься и падает с грохотом. Ручной запуск удаётся,- однако,- для входа требуется логин на Рамблере, дальше не пошёл. Дизайн явно навеян макосью, но достаточно приятный, по крайней мере не такой кривой, как у мультифона.

Дождёмся стабильной версии?

, ,

СМИ: Слишком Много Информации

18 Ноябрь 2011

Прежде чем разрабатывать систему защиты системы, убедись, что система не работает против тебя. Очень часто, система авторизации возвращает слишком много информации в случае неуспешного логина. Например, в абстрактной системе (веб-сайт, или FTP-сервер или SIP-софтсвич) пытается авторизоваться злоумышленник, используя случайный логин vasya.pupkin и пароль 123456. Система ищет в списке пользователя vasya.pupkin и пытается сверить хеш пароля (вы же не храните пароли в базе данных открытом виде, правда?). Система быстро убеждается в том, что пользователя с таким именем не существует и отправляет ответ, что-то вроде “Invalid Username”(Неправильное имя пользователя) или “Username Does Not Exist”(Пользователь не найден). Вот Вам прекрасный пример принципа СМИ,- слишком много информации.

Почему? Читать далее...

, ,

Apple Autoingestion.class и прокси

19 Октябрь 2011

Собираю статистику по загрузкам своих приложений из Apple AppStore. Яблочники не так давно выпустили утилиту для загрузки отчётов, да вот беда,- не работает эта утилита через прокси, а у моего сервера другого доступа, кроме как через корпоративный прокси-сервер и нет. Пробовал устанавливать переменные окружения HTTP_PROXY и FTP_PROXY,- не помогает.
Читать далее...

, ,

Ctrl-S и vi

У системных администраторов и программистов бывают плохие привычки. Одна из таких привычек,- работать попеременно в разных редакторах, например в редакторе mc и vi в консоли, да ещё и в Notepad++, к примеру. Сам по себе факт работы в разных редакторах ни плох, ни хорош, но вот следствия бывают не очень приятными. Например, привычные сочетания клавиш под разными системами могут приводить к разной реакции. Одно из таких комбинаций CTRL+S. Во множестве десктопных редакторов, в особенности в Windows, такое сочетание зарезервировано для сохранения текущего документа, в редакторе mc это-же сочетание триггерит подсветку кода.
А вот при работе по ssh в терминальном окне Putty это сочетание клавиш приводит к зависанию сессии. Множество раз мне казалось, что сессия зависла и приходилось попросту подключаться заново к серверу, пока я не решил разобраться.

Оказалось, что на самом деле CTRL+S включает режим XOFF, в котором терминал принимает нажатия клавиш, но не выводит в ответ ничего. Визуально кажется, что сессия умерла, но это не так. А если есть режим XOFF, то есть режим XON. Режим XON включается обратно при помощи CTRL+Q.

Вот так-то.

, , , , ,

Html, table, colspan и неизвестное количество столбцов

Много раз сталкивался с ситуацией, когда надо сделать ячейку таблицы, объединяющую все столбцы (например для подзаголовка группы строк или как footer для всей таблицы). Если наперёд знаешь сколько столбцов,- не проблема, есть стандартный атрибут colspan, указываешь количество объединяемых ячеек, например colspan="2", всё работает.
А если страница выводится скриптом и количество столбцов наперёд неизвестно? И нет возможности посчитать в шаблонизаторе? В последний раз такая задача возникла при использовании Django, там шаблоны очень удобные,но с математикой там туго, а писать собственный template tag или filter казалось излишеством. Выкручивался либо изменением шаблона (чтобы такое объединение ячеек вообще не было нужно) либо городил в коде дополнительный подсчёт количества столбцов, пока не надоело. А когда надоело,- полез гуглить.

Оказалось, что не я один "хочу странного", куча народу уже сталкивалась с такой-же проблемой. Пробовали писать colspan="all" или colspan="0", - не во всех браузерах работает. На stackoverflow даже народ упёрся,- и там нашлось решение,- рекомендуют писать colspan="100%".

Попробовал на доступных браузерах,- работает везде.

,

Yealink VP-2009 Keyboard Test && Factory Reset

На забугорных форумах нашёл информацию о том, что в телефоне при наборе *#5702000# включается режим Keyboard Test (ну это проверка клавиатуры по-нашему). Проверил, - действительно запускается. Такой текстово-гравический экранчик с крупными буквами, просит нажимать последовательно F1, F2 и т.д. Каждая кнопка нажимается по 2 раза, после этого переходим к следующей кнопке. Дошёл до кнопки Ok, нажал два раза,- телефон ушёл в ребут. Правильно, ведь на этом забугорном форуме было написано, что для Factory Reset'а надо дважды нажать Ok в режиме тестирования клавиатуры :-) . Вот только как проверить оставшиеся клавиши после Ok? Правильно, второй раз нажимать другую клавишу :-)

Собственно сброс забытого администраторского пароля так и происходит.

,

wxPython в Windows7

14 Сентябрь 2010

Поставил portablePython для тестирования и разработки в недружественных корпоративных условиях (да-да, на моём рабочем компьютере у меня нет администраторских прав). При тестах простейшего графического приложения с использованием wxPython выявилась неприятная особенность,- при MouseOver над окном приложения puthon.exe тупо умирает. Думал,- какое-то событие неправильно обрабатывается, пробовал перехватывать,- результата не дало. Гугление показало, что проблема в версии Python,- в 2.5.x всё работает, а в ветке 2.6 ошибка проявляется. Обещают починить в 2.8.10. Пока откатился на 2.5.4.

,

Полный список параметров SIP

9 Сентябрь 2010

Обнаружил полезный документ,- полный список заголовков SIP и других параметров (Session Initiation Protocol (SIP) Parameters):
В документе описаны:

Registries included below:
- Заголовки (Header Fields)
- Протоколы причин (Reason Protocols)
- Опциональные теги (Option Tags)
- Коды уведомлений (Warning Codes (warn-codes))
- Методы и коды ответов (Methods and Response Codes)
- Значения приватных заголовков (SIP Privacy Header Values)
- Имена механизмов безопасности (Security Mechanism Names)
- Схемы сжатия (Compression Schemes)
- Параметры URI (SIP/SIPS URI Parameters)
- Параметры и значения полей заголовков (Header Field Parameters and Parameter Values)
- Назначения и форматы URI (URI purposes)
- Пространства имён приоритетов (Resource-Priority Namespaces)
- Значения приоритетов (Resource-Priority Priority-values)
- Параметры идентификационной информации (Identity-Info Parameters)
- Параметры алгоритма идентификационной информации (Identity-Info Algorithm Parameter Values)
- Параметры настройки User-Agent (SIP Forum User Agent Configuration Parameters)

, ,

PyLDAP: Авторизация в AD

6 Сентябрь 2010

Наткнулся на вредную багу при авторизации в ActiveDirectory: после успешного ldap.bind() получал ошибку "In order to perform this operation a successful bind must be completed on the connection". Решение нашлось в официальном FAQ python-ldap:

When searching from the domain level MS AD returns referrals (search continuations) for some objects to indicate to the client where to look for these objects. Client-chasing of referrals is a broken concept since LDAPv3 does not specify which credentials to use when chasing the referral. Windows clients are supposed to simply use their Windows credentials but this does not work in general when chasing referrals received from and pointing to arbitrary LDAP servers.
Therefore per default libldap automatically chases the referrals internally with an anonymous access which fails with MS AD.

Если по русски,- иногда AD-сервер возвращает ссылки на дополнительные сервера, на которых могут быть дополнительные результаты поиска. По умолчанию libldap пытается получить результаты с помощью анонимного доступа, в случае с Active Directory этот номер не проходит.
Решается добавлением l.set_option(ldap.OPT_REFERRALS,0) после ldap.initialize().

 
l = ldap.initialize('ldap://foobar')
l.set_option(ldap.OPT_REFERRALS,0)
 

, , ,

Голосовые кодеки в VoIP

16 Август 2010

Чтоб не потерять, собрал в одну табличку голосовые кодеки для VoIP.

Схема сжатия Скорость, Кбит/с Качество голоса
G.711 PCM 64 Отличное
G.723 MP-MLQ 6.4 - 5.3 Хорошее(6.4), плохое(5.3)
G.726 ADPCM 40, 32, 24 Хорошее(40),плохое(24)
G.728 LD-CELP 16 Хорошее
G.729 CS-ACELP 8 Хорошее
iLBC 15.20 - 13.33 Хорошее
IPCMWB 13 Хорошее