понедельник, 4 марта 2013 г.

Enterprise Application на QT

Обязательное разложение системы на слои: datasource, domain, presentation. Использование шаблона MVP. Основная цель MVP - обеспечить пригодность к тестированию на всех уровнях, в том числе и контроллеров, т.к. не требуется создание конкретные вьюх. Управление стилями приложения можно производить при помощи setStyleSheet. Дополнительно должны использоваться шаблоны ValueObject (например, для Money), ORM (odb, QxOrm), библиотека печати exaro.

суббота, 17 ноября 2012 г.

Настройка VirtualBox в ubuntu 12.04 server

Устанавливаем virtualbox c официального сайта https://www.virtualbox.org/wiki/Downloads.
Для запуска сервиса vboxweb-service необходимо наличие файла /etc/default/virtualbox. Если он не существует, его необходимо создать. Перечень доступных опций:

Setting Description
VBOXWEB_USER The user as which vboxwebsrv will run.
VBOXWEB_HOST The host to bind to (localhost).
VBOXWEB_PORT The port to bind to (18083).
VBOXWEB_TIMEOUT Session timeout in seconds; 0 = disable timeouts (300).
VBOXWEB_CHECK_INTERVAL Frequency of timeout checks in seconds (5).
VBOXWEB_THREADS Maximum number of worker threads to run in parallel (100).
VBOXWEB_KEEPALIVE Maximum number of requests before a socket will be closed (100).
VBOXWEB_LOGFILE Name of file to write log to (no file).
INSTALL_DIR The location of the vboxwebsrv binary (/usr/lib/virtualbox).

Необходимо указать хотя бы пользователя, от имени которого будет производиться запуск сервиса. Если планируется получать доступ к сервису удаленно, то нужно указать также VBOXWEB_HOST. В моем случае, чтобы jenkins мог подключаться к сервису пришлось явно  указать ip.

Настройка svn+sasl+ldap

Задача
Настроить аутентификацию Active Directory пользователей в Subversion для работы по протоколу SVN.

Использованные материалы
Using Cyrus SASL Authentication with Subversion
Настройка SVN вместе с LDAP
SVN SASL Commit - Authorisation failed
Subversion+OpenLDAP
SVN Authentication against a Microsoft Active Directory using svnserve sasl, ldap
Chapter 6. Server Configuration
Создаем свой SVN сервер: 3$ и 30 минут


Реализации
Доступ к SVN может быть предоставлен несколькими способами:
1. Доступ по протоколу SVN используя встроенную аутентификацию.
2. Доступ по протоколу SVN используя SASL аутентификацию.
3. Доступ по протоколу HTTP/HTTPS через Apache и libapache2-svn.
4. Доступ через тонель поверх SSH.

На данный момент у нас настроен с пособ с Apache/HTTPS. Устраивает всё кроме скорости работы. Посему всё склоняются к работе по протоколу svn:// и используя внутренюю аутентификцию.
Будет использован механизм аутентификации SASL-ldap.

Настройка
Окружение
cat /etc/lsb-release
Цитировать
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04 LTS"

svn --version
Цитировать
svn, version 1.6.17 (r1128011)
   compiled Dec 17 2011, 16:12:52

Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.apache.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository access (RA) modules are available:

* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
  - handles 'http' scheme
  - handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
  - with Cyrus SASL authentication

  - handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' scheme
Т.е. настройка в Ubuntu 12.04 где SVN уже идёт с поддержкой SASL.

Устанавливаем необходимые пакеты
sudo apt-get install sasl2-bin libsasl2-2 libsasl2-modules libsasl2-modules-ldap
Настраиваем SASL
vi /etc/default/saslauthd
Цитировать
START=yes
MECHANISMS="ldap"

vi /etc/saslauthd.conf
Цитировать
ldap_servers: ldap://dc.domain.com
ldap_search_base: OU=Users,DC=DOMAIN,DC=COM
ldap_bind_dn: domain\ldapuser
ldap_bind_pw: *******
# Misc options for LDAP to make it work with Microsoft AD
ldap_deref: never
ldap_restart: yes
ldap_scope: sub
ldap_use_sasl: no
ldap_start_tls: no
ldap_version: 3
ldap_auth_method: bind
ldap_filter: (sAMAccountName=%u)
ldap_password_attr: userPassword
ldap_timeout: 10
ldap_cache_ttl: 30
ldap_cache_mem: 32768

Стартуем SASL демон
/etc/init.d/saslauthd restart
Тестируем что наш SASL-ldap механизм работает
testsaslauthd -u domainuser -p *******
Цитировать
0: OK "Success."
Ежели проблемы, то стартуем sasl демон с дебагом и смотирм логи
/usr/sbin/saslauthd -a ldap -d -n 1 -V
tail /var/log/auth.log

Указываем SVN что аутентификация у нас будет через SASL
vi /var/svn/sandbox/conf/svnserve.conf
Цитировать
[general]
anon-access = none
auth-access = write
authz-db = ../../authz
realm = Sandbox

[sasl]
use-sasl = true
min-encryption = 0
max-encryption = 256

Создаём файл с настройками уатентификации для SVN в папке с плагинами для sasl(имя файла svn.conf)
vi /usr/lib/sasl2/svn.conf
Цитировать
## Password check method, default to the SASL AUTH daemon
pwcheck_method: saslauthd
## Auxiliary (propery) plugin, use ldapdb
auxprop_plugin: ldapdb
## Mechanism list, MS AD requires you to send credentials in plain text
mech_list: PLAIN
ldapdb_mech: PLAIN
## Saslauthd socket path
saslauthd_path: /var/run/saslauthd/mux
## Ldap server uri
ldapdb_uri: ldap://dc.domain.com

Перегружаем демон SVN
service svnserve restart
Теперь пользователи Active Directory смогут получать доступ к репозиторию согласно доступам прописанным в файле authz-db = ../../authz

Недостатки метода
При таком методе аутентификации мы вынуждены передавать пароль в PLAIN а иначе мы несможем cоедениться с AD.
В результате:
tcpdump -ni eth0 -A src host 192.168.1.2 and tcp dst port 3690
Цитировать
17:10:10.488834 IP 192.168.1.2.59751 > 192.168.1.1.3690: Flags [P.], seq 145:184, ack 166, win 65115, length 39
E..O.b@...."..@...@     .g.j....~...P..[....( PLAIN ( 21:AHVzZXIAcGFzc3dvcmQ=
Заходим Base64 Decode и видим какой пароль передавался по сети.

Метод я настроил и понял что пользоваться им нестоит, т.к. под угрозу ставяться пароли пользователей.

Пошёл смотреть в сторону SVN + SASL GSSAPI(Kerberos)

Источник:
http://forum.ubuntu.ru/index.php?topic=197819.0

Стоит обратить внимание на параметр auxprop_plugin: в файле svn.conf. В ubuntu 12.04 precise его значение должно быть ldapdb, хотя в других системах, в том числе и ubuntu 10.04 lucid допускалось ldap.

воскресенье, 28 октября 2012 г.

wifi адаптер Atheros AR9285

В убунту 12.04 появились проблемы со стабильностью подключения по wifi через встроенный в lenovo b570e wifi адаптер Atheros AR9285. Найденные советы в сети по отключению power managment (http://www.emmolution.org/?p=253) не помогли. Решением является установка BSSID в менеджере подключений (http://ubuntuforums.org/showpost.php?p=11647255&postcount=643).

Ссылки:
http://ubuntuforums.org/showpost.php?p=11647255&postcount=643
http://ubuntuforums.org/showthread.php?t=1983003
http://www.emmolution.org/?p=253

четверг, 4 октября 2012 г.

Импорт плагина qml через ресурсы qrc

Qt позволяет воспользоваться системой ресурсов для вкомпиливания в бинарь .qml и qmldir файлов. В таком подходе все отлично, до тех пор пока не понадобится импортировать с++ плагин для qml. Движок импорта ищет плагин, описанный в qmldir как plugin name relpath, в окружении "qrc:/". Соответственно, не может найти там плагин. При попытке задать вместо relpath абсолютный путь файловой системы все заработало. Следует подумать в этом направлении.

зы Включить трассировку импорта можно так:
     QByteArray data = "1";
    qputenv("QML_IMPORT_TRACE", data); 

вторник, 28 августа 2012 г.

sudo/kdesudo перестает работать для gui из-за правил в sudoers

При добавлении строки
Defaults        env_keep="HOME USER PATH http_proxy https_proxy"
в файл /etc/sudoers перестает работать gui через sudo. Например, sudo partitionmanager или kdesudo partitionmanager.

воскресенье, 15 июля 2012 г.

Настройка proxy для sudo

Для того чтобы команда sudo подхватывало переменные окружения вида http_proxy, необходимо в файле /etc/sudoers добавить строку Defaults env_keep="HOME USER PATH http_proxy https_proxy"