Строим персональный SyncML-сервис синхронизации::Журнал СА 3.2008
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Дата-центры  

Дата-центры: есть ли опасность утечки данных?

Российские компании уже несколько лет испытывают дефицит вычислительных мощностей. Рост числа проектов,

 Читать далее...

Книжная полка  

Защиты много не бывает

Среди книжных новинок издательства «БХВ» есть несколько изданий, посвященных методам социальной инженерии

 Читать далее...

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

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

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

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

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6457
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 7150
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4431
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3096
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3894
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3910
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6397
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3244
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3540
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7379
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10735
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12454
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 14122
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9205
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7151
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5457
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4691
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3506
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3218
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3457
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3101
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Строим персональный SyncML-сервис синхронизации

Архив номеров / 2008 / Выпуск №3 (64) / Строим персональный SyncML-сервис синхронизации

Рубрика: Администрирование /  Администрирование

МАКСИМ ИРГИЗНОВ

Строим персональный SyncML-сервис синхронизации

Контакты, задачи, календарь в мобильном телефоне, КПК или персональном компьютере – возможно ли их объединить в единую информационную среду с удобным доступом? Можно ли получить к ней оперативный доступ, находясь в поездке? Теперь на эти вопросы есть ответ.

Нам очень часто необходимо иметь единый центр хранения пользовательских данных (контакты, календарь, расписания задач, заметки), как на работе, так и дома. Как правило, эти данные необходимы на разных устройствах или рабочих местах. В таких случаях локальная синхронизация с помощью ПО производителя устройства становится очень неудобной.

Технология SyncML призвана помочь в решении этой проблемы. Вы можете создать единый центр синхронизации с удаленным доступом и пользоваться своим органайзером в любом удобном месте, получить удобные средства создания и редактирования различной информации. Также единый центр хранения данных обеспечивает соответствующее резервирование и быстрое восстановление информации.

В Интернете существуют различные сервисы (см. ссылки по теме) для синхронизации информации, но они, как правило, платные либо имеют ограничения, а доверять стороннему серверу приватную информацию часто желания нет.

В качестве рабочей станции я использую самую последнюю версию FreeBSD 7.0-STABLE, но замечу, что все описанное можно также проделать на любой другой UNIX-подобной системе с соответствующими поправками к разделу «Установка».

Этап 1. Перед установкой

Для работы с SyncML потребуется (подробное описание устанавливаемой библиотеки можно получить в файле pkg-descr) установка следующих библиотек и программ из коллекции «портов» FreeBSD:

  • /usr/ports/devel/cmake;
  • /usr/ports/textproc/wbxml2;
  • /usr/ports/devel/libsoup;
  • /usr/ports/comms/openobex (не обязательно, если не будете делать локальную синхронизацию по протоколу OBEX).

Устанавливаете их вашим любимым способом: «make install, portinstall, etc».

Для работы понадобятся следующие модули (текущий стабильный релиз):

Инструмент, с помощью которого мы будем производить синхронизацию: http://opensync.org/download/releases/0.36/msynctool-0.36.tar.bz2 (существует и GUI-версия этой утилиты – http://opensync.org/attachment/wiki/download/multisync-gui-0.91.0.tar.gz). Скачиваем их к себе в домашний каталог любимым download-инструментом.

Этап 2. Установка

Итак, сборка ПО из портов (рекомендую обновить их на текущую дату) закончена, приступим к самому главному.

Для простоты всю работу будем производить в домашней директории пользователя (во всех примерах это будет домашний каталог /home/xeon).

Внимание: для корректной сборки необходимо проверить, чтобы glib2 (/usr/ports/devel/glib20, при отсутствии устанавливается как зависимость libsoup) был собран с поддержкой posix thread, например, так:

# ldd /usr/local/lib/libgthread-2.0.so

    libthr.so.3 => /lib/libthr.so.3

Выделенная красным строка (как вариант там может быть libpthread.so.2) показывает наличие поддержки потоков (см. рис. 1).

Рисунок 1. Результат команды ldd, показывающий наличие (выделенная строка) поддержки потоков в glib

Внимание: наличие поддержки потоков является обязательным условием для продолжения сборки библиотек.

Первым делом распаковываем и устанавливаем пакет libsyncml:

# tar zxf libsyncml-0.4.6.bz2

# cd libsyncml-0.4.6

# mkdir build

# cd build

# cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DENABLE_OBEX=no ../

Используя свой любимый редактор, поправьте файл libsyncml-1.0.pc, добавив в конец строки «Cflags: -I${includedir}» следущее:

-I/usr/local/include

Сохраняем и устанавливаем библиотеку:

# make install

Далее – libopensync – основная библиотека, реализующая синхронизацию:

# tar zxf libopensync-0.36.tar.bz2

# cd libopensync-0.36

# mkdir build

# cd build

# cmake -DCMAKE_INSTALL_PREFIX=/usr/local ../

# make

# make install

 Коротко об устанавливаемых плагинах:

  • plugin-vformat – содержит основные функции по работе с различными форматами синхронизируемой информации.
  • plugin-syncml – предоставляет реализацию доступа к протоколу SyncML посредством простейших интерфейсов, таких как http, obex. Я буду использовать в работе простейший http-сервер, идущий в составе плагина и не требующий установки стороннего ПО.
  • plugin-file – обеспечивает синхронизацию данных, расположенных на файловой системе.

Приступим к сборке минимально необходимых плагинов, начнем с libopensync-plugin-file:

# tar zxf libopensync-plugin-file-0.36.tar.bz2

# cd libopensync-plugin-file-0.36

# mkdir build

# cd build

# cmake -DCMAKE_INSTALL_PREFIX=/usr/local ../

# make

# make install

Повторяем те же действия для плагинов libopensync-plugin-syncml и libopensync-plugin-vformat. При сборке vformat есть одна особенность: необходимо скопировать файл

/usr/local/include/iconv.h в каталог libopensync-plugin-vformat-0.36/src и поправить файл libopensync-plugin-vformat-0.36/src/vformat.c, в нем мы заменяем «#include » на «iconv.h» и устанавливаем плагин.

Аналогично собираем наш основной инструмент синхронизации msynctool, после сборки которого установку можно считать законченной и приступить к настройке.

Этап 3. Настройка

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

$  msynctool --listplugins

Available plugins:

syncml-http-server

syncml-http-client

file-sync               

Результат работы команды представлен на рис. 2.

Просмотр установленных плагинов

Рисунок 2. Просмотр установленных плагинов

По команде «msynctool --listformats» мы получим список форматов, там должны присутствовать: vcard21(30), vevent20(10), vnote11, vtodo20.

Все в порядке, можно продолжать.

Создаем группу для синхронизации и подключаем к ней наши плагины:

$ msynctool --addgroup mysync

$ msynctool --addmember  mysync syncml-http-server

$ msynctool --addmember  mysync file-sync

Проконтролировать результат работы данных команд можно так:

$ msynctool --showgroup mysync

Groupname: mysync

Member 1: syncml-http-server

        No Configuration found: Member has not been configured

Member 2: file-sync

        No Configuration found: Member has not been configured

Результат работы команды говорит нам о том, что мы не сконфигурировали членов созданной группы. Сконфигурировать каждого члена созданной нами группы очень просто с помощью такой команды:

$ msynctool --configure mysync 1

Откроется ваш редактор по умолчанию с конфигурацией (с комментариями по каждому из параметров) в формате XML.

Для члена syncml-http-server нам достаточно указать URL, на котором будет работать сервер, и port в соответствующих местах конфигурационного файла

<url>10.20.30.40</url>

<port>1234</port>

Замечание: не забудем открыть указанный в конфигурации порт (протокол TCP) на своем брандмауэре. Допустимо использовать 80-й порт в конфигурации, если это не вызывает конфликта с установленным веб-сервером.

Также в конфиге следует проверить (имена баз чувствительны к регистру символов) описания баз данных, к которым будет подключаться клиент. Для телефонов Sony Ericsson часть конфигурации выглядит так:

<!-- Contact database -->

  <database>

     <name>Contacts</name>

     <objtype>contact</objtype>

     <objformat>vcard21</objformat>

  </database>

 <!-- Calendar database -->

  <database>

     <name>Calendar</name>

     <objtype>event</objtype>

     <objformat>vevent20</objformat>

  </database>

  <!-- Note database -->

  <database>

     <name>Notes</name>

     <objtype>note</objtype>

     <objformat>vnote11</objformat>

  </database>

  <!-- Tasks database -->

  <database>

     <name>Tasks</name>

     <objtype>todo</objtype>

     <objformat>vtodo20</objformat>

  </database>


Замечание: выяснить необходимые версии форматов можно, отправив через Bluetooth-соединение, например, контакт, и в полученном файле посмотреть на строчку VERSION. При работе с базой допускается версия выше, чем есть в синхронизируемом устройстве.

Внимание: после запуска сервиса и его отладки вы должны установить username и password в члене syncml-http-server созданной группы в целях повышения безопасности!

Таким же образом конфигурируем второго мембера, в его конфигурации в данном блоке прописываем реальный путь:

<directory>

    <path>/home/xeon/.opensync</path>

    <objtype>data</objtype>

  </directory>

Проверяем результат нашей конфигурации:

$ msynctool --discover mysync                              
Discovered Objtypes:                                       
        contact                                            
                Format: vcard21                            
                                 conversion config: (null) 
        event                                              
                Format: vevent20                           
                                 conversion config: (null) 
        note                                               
                Format: vnote11                            
                                 conversion config: (null) 
Discovered Objtypes:                                       
        contact                                            
                Format: vcard21                            
                                 conversion config: (null) 

Вот, собственно, и все.

Этап 4. Синхронизация

Вот мы и готовы запустить команду «msynctool --sync mysync» и подключиться клиентом к нашему серверу.

Отдельные устройства могут потребовать иной формат команды:

msynctool --sync mysync  --slow-sync contact

где contact – тип (посмотреть типы можно через команду --discover) синхронизируемого объекта (см. рис. 3).

Успешный запуск и ожидание подключения клиента

Рисунок 3. Успешный запуск и ожидание подключения клиента

 Возьмем для синхронизации современную модель телефона Sony Ericsson (на других телефонах настройки аналогичны). В нем необходимо произвести следующие настройки: «Меню > Параметры > Связь > Синхронизация». Там выбрать:

  • Новая учетная запись – тип SyncML;
  • Имя – произвольное.

 На вкладке «Общие» указать:

  • Адрес сервера – http://10.20.30.40:1234/.
  • Имя пароль – пока не заполняем.

На вкладке «Приложения» ставим галочки напротив «Контакты» и «Календарь».

На вкладке «Параметры приложения» выбираем «Контакты», вписываем:

  • Имя баз данных – contacts;
  • Логин пароль – пустые.

 Также для «Календаря»:

  • Имя баз данных – calendar;
  • Задания – tasks;
  • Заметки – notes.

Удобные имена для названия баз (к сожалению, только в латинице) вы можете сконфигурировать в члене syncml-http-server, сохраняем учетную запись и пробуем. Если все заработало успешно, поздравляю!

На рабочей станции под управлением *nix синхронизацию можно проводить, например, с почтовым клиентом Evolution2. Для этого скачиваем и устанавливаем по приведенной в разделе «Установка» схеме плагин libopensync-plugin-evolution2:

$ msynctool --addmember mysync  evo2-sync
$ msynctool --configure mysync  3

В файле конфигурации прописываем пути:

<config>

  <address_path>file:///home/xeon/.evolution/addressbook/local/system</address_path>

  <calendar_path>file:///home/xeon/.evolution/calendar/local/system</calendar_path>

  <tasks_path>file:///home/xeon/.evolution/tasks/local/system</tasks_path>

 </config>

Таким же образом устанавливаются и настраиваются плагины для синхронизации с Motorola phones, KDE PIM, Palm, Google Calendar, а также по протоколу irmc.

Популярные телефоны с этой технологией:

  •  Nokia 3250, 6233, N70;
  •  Sony Ericsson K790i, K750i, Z750i.

Хочется добавить, что объединение в группу различных типов и методов синхронизации позволяет нам с лёгкостью синхронизировать различные устройства между собой, выполняя единственную команду (достаточно подключить в группу новый (дополнительный) плагин и сконфигурировать описанным выше способом).

Замечания

Для выполнения операции резервного копирования достаточно сделать копию каталога /home/xeon/.opensync/ любым удобным способом, например:

tar -jcf opensync.tbz .opensync/

В рассмотренном способе синхронизация выполняется посредством протокола http, что позволяет очень легко перехватить и подсмотреть ваши данные. Решить проблему можно, перейдя на защищенные https-соединения, которые будут осуществляться, например, с ssl-прокси-сервером.

Используемые в статье программы и примеры можно взять за основу для построения собственного публичного сервиса синхронизации контактной информации.

Удачи!

  1. http://www.syncml.org – спецификации по SyncML.
  2. http://www.opensync.org/wiki/SetupGuide – руководство по установке.
  3. http://ru.wikipedia.org/wiki/SyncML – информация об SyncML.
  4. http://www.funambol.com – инструменты синхронизации для различных платформ.
  5. http://nazarov.com/wp/2007/10/24/107 – большой список сервисов для синхронизации SyncML.
  6. http://www.egroupware.org – сервер групповой работы с поддержкой SyncML.

Комментарии
 
  20.05.2008 - 06:21 |  Nib

Извините за дилетантство, задаю вопрос не покопавшись сам...Можно ли как нибудь сделать локальную синхронизацию, т.е. доступную только в локальной сети? Если да, куда копать?

  21.05.2008 - 04:15 |  Xeon

Это очень сильно зависит от телефона и его клиента синхронизации.
В телефонах Sony Ericsson K790i, K750i, Z750i. можно такое сделать. За это отвечает настройка "разреш. местн. подключ.", тогда когда телефон подключен через bluetooth(профиль PAN) или шнурок будет доступна локальная сеть и соответствующий сервис.

  09.12.2008 - 03:44 |  raVen

как собрать /usr/ports/devel/glib20 с posix thread? пробовал добавлять в CONFIGURE_ARGS "--enable-threads --with-threads=posix", но не помогает. всё равно "ldd /usr/local/lib/libgthread-2.0.so" не показывает "libthr.so.3 => /lib/libthr.so.3".

  10.12.2008 - 08:50 |  raVen

в семёрке нормально собирается и запускается

  10.12.2008 - 08:50 |  raVen

только нифига не работает:

(process:90463): GLib-GObject-CRITICAL **: g_type_instance_get_private: assertion `instance != NULL && instance->g_class != NULL' failed
Segmentation fault: 11

это при попытке прицепится телефоном для синхронизации.

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru