Создание собственной облачной синхронизации контактов Андроид

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

 

Итак, в результате всех действий мы получим синхронизацию контактов между нашим облаком и устройствами на Андроид. Для этого нам понадобиться компьютер, который находится у вас дома (можно использовать и выделенный сервер где-нибудь на хостинге, но для простоты рассматриваем вариант с компьютером дома), домашняя W-Fi сеть и набор программ из сервера Wamp и CalDAV сервера Baikal.
Сначала скачиваем и устанавливаем Wamp сервер (в зависимости от разрядности вашей ОС), установка проста-соглашаемся с лицензионным соглашением, а затем Далее несколько раз. По умолчанию он ставится на диск С в папку wamp для 32 разрядных ОС или wamp64 для 64 разрядных.
Далее нужно запустить Wamp сервер, чтобы проверить, что он работает, иконкой на рабочем столе. Если все нормально, появится иконка в трее и она будет зеленого цвета. При этом во время запуска сервера Apache может появиться окно с запросом разрешения доступа от Брандмауера Windows, в нем нужно разрешить доступ. При установке на Windows 7 32 разрядную, у нас возникла ошибка при запуске Apache, он сообщал об ошибке vcruntime140.dll. Если вдруг у вас возникнет такая же, нужно просто установить Microsoft Visual C++ Runtime 2015. Если иконка так и не становится зеленой и пишется, что запущен только один сервис – mysql, а не apache, нужно нажать по иконке Wamp  в трее, выбрать Apache-Service Administration—nstall Service, появится консольное окно, где будет написано, что порт 80 свободен и предложено нажать Enter для установки сервиса. И после этого надо снова запустить Wamp иконкой с рабочего стола и иконка в трее должна стать зеленой:

 

1

Затем нужно в том же меню в разделе PHP-Version выставить версию PHP 7 вместо 5.6. На этом первый этап закончен.

Скачиваем сервер Байкал 0.4.6, это обычный архив, в котором находится папка Baikal. Ее нужно скопировать в папку C:\wamp\www или C:\wamp64\www (смотря какой разрядности ОС) чтобы в итоге получилось так:

2

После этого можно приступать к настройке Байкала. Сначала нужно узнать ip адрес своего компьютера, нажимаем правой кнопкой мыши по значку мониторчика в трее и заходим в Центр управления сетями и общим доступом, далее жмем слева ссылку Управление параметрами адаптера, далее нажимаем 2 раза мышью на подключение по локальной сети (или по беспроводной, если компьютер подключен через нее) и в открывшемся окошке кнопку Сведения и видим что-то похожее на:

3

Запоминаем или записываем себе этот адрес, он нам пригодится.
Создадим базу данных, которую будет использовать Baikal, для этого в меню Wamp в трее выбираем пункт phpmyadmin, откроется браузер с запросом логина и пароля, вводим root без пароля и жмем ОК, откроется окно:

4

В нем заходим в раздел Учетные записи пользователей и жмем ссылку Добавить учетную запись пользователя

Сочиняем пользователя (в примере baikal) и пароль (в примере baikal1, но лучше задать посложнее) и вводим их в окно, также ставим галку о создании базы данных с таким же именем как у пользователя и предоставлении на нее привилегий затем внизу жмем кнопку Вперед:

5

База данных создана, выбираем ее слева в списке баз данных, заходим в раздел операции и внизу ставим сравнение utf8_unicode_ci и жмем кнопку Вперед:

6

Дальше открываем любой браузер и пишем в адресной строке http://ваш_ip_адрес/baikal/html/ и нажимаем на enter. Должно открыться такое окошко, в котором надо заполнить часовую зону и сочинить админский пароль именно от Байкала:

7

Жмем Save changes и переходим на следующую страницу, где надо поставить галку Use MySQLи заполнить поля:

8

Если все введено корректно, дальше появится такое окно в котором надо нажать зеленую кнопку:

9

Вводим данные от администрирования байкала:

10

И попадаем в админку Байкала:

11

Заходим во вкладку Users and resources, жмем кнопку Add user, откроется окно, в котором надо заполнить все данные о создаваемом пользователе:

12

И будет создан наш пользователь, данные которого мы будем использовать при подключении аккаунта в Андроид. Для него уже создана Адресная книга по умолчанию и Календарь по умолчанию.

Теперь добавим новый аккаунт в Андроид устройство, для этого надо установить программу DAVdroid, затем запустить ее, нажать красный + внизу, выбрать вход через URL и имя пользователя, ввести в полу Base URL: http://ip_адрес_компьютера/baikal/html/dav.php/   в поле имя пользователя-соответственно имя пользователя, созданного в предыдущем шаге и его пароль. Будет добавлен аккаунт, можно нажать на значок синхронизации и она будет произведена, пока правда контактов на сервере нет. Также в настройках (значок шестеренки) можно поставить галку Sync over WIFi only и задать имя своей домашней WiFi сети, ведь все равно синхронизация без особых настроек будет работать только в ней. Также чуть ниже в разделе CarDAV нужно задать параметр Groups are per-contact categories. На этом настройка Андроида закончена, нужно перенести контакты.

Теперь настало время перенести наши контакты из учетной записи Google в Байкал. Для этого есть 2 варианта-можно или экспортировать их через стандартную звонилку андроид на карту памяти, а затем импортировать в учетную запись байкала или использовать стороннюю  программу, например  emClient. Рассмотрим 2й метод.
Итак, ставим emClient, добавляем учетную запись Google (Меню-Инструменты-Учетные записи нажать на +), выбрать Контакты-Google контакты, ввести свои данные. Произойдет синхронизация контактов с учеткой Google, они добавятся в меню слева.  Затем, точно также добавляем учетную запись нашего сервера Байкал, выбрав вместо Google contacts – CardDAV, вводим точно также адрес нашего сервера, пользователя и пароль и видим слева в меню появившуюся учетную запись Байкала (она выглядит как Имя пользователя-Addressbooks-Default address book, название адресной книги можно поменять в настройках админки Байкала). Вот как это выглядит (желтым отмечен аккаунт Байкала, он переименован из baikal в contact190):

13

А затем все очень просто-перетаскиваем мышкой контакты из учетки Gmail в адресную книгу Байкала и они синхронизируются с нашим сервером, перетаскивается и вся информация связанная с контактом, единственное фотографии перетаскиваются с плохим качеством, их нужно перезагружать по хорошему.
После того как все заработает, можно немного настроить все это под себя, поменять название адресных книг, выставить категории контактам (это тоже удобно делать в emClient):

14

Read only для CalDAV+CardDAV сервера Baikal

К сожалению такая полезная функция как ReadOnly для аккаунта на сервере Baikal не предусмотрена. Ну например когда делаешь общую адресную книгу для организации и не хочешь чтобы любой пользователь нечаянно нажав пару кнопок не удалил важные контакты.

Однако! Чуть покопавшись в движке, можно сделать небольшой патч, который позволит на нужное время включать режим readonly, и выключать его (на период когда нужно подправить общий справочник).

Открываем baikal/vendor/sabre/dav/lib/CardDAV/Card.php и в строке 195 меняем write на read.

У себя я оформил всё 3 файлами: 1) Патч 2) Включение режима readonly 3) Выключение режима

readonly.path:

1
2
3
4
5
6
7
8
9
10
11
--- /usr/local/www/apache24/sites/baikal/vendor/sabre/dav/lib/CardDAV/Card.php  2018-07-23 14:17:02.792202000 +0300
+++ /home/pavel/path_dav/Card.php   2018-07-23 14:18:20.941978000 +0300
@@ -220,7 +220,7 @@
                 'protected' => true,
             ],
             [
-                'privilege' => '{DAV:}write',
+                'privilege' => '{DAV:}read',
                 'principal' => $this->addressBookInfo['principaluri'],
                 'protected' => true,
             ],

readonly.sh

1
2
#!/bin/sh
patch /usr/local/www/apache24/sites/baikal/vendor/sabre/dav/lib/CardDAV/Card.php /home/pavel/path_dav/readonly.path

write.sh

1
2
#!/bin/sh
patch -R /usr/local/www/apache24/sites/baikal/vendor/sabre/dav/lib/CardDAV/Card.php /home/pavel/path_dav/readonly.path

https://грибовы.рф/?p=4112

https://habr.com/ru/post/197484/

https://maincomputers.ru/novosti-it/sozdanie-sobstvennoj-oblachnoj-sinkhronizatsii-kontaktov-android.html

 

 

Автор: Электроник

Системный администратор широкого профиля. От ИТ до Маркетинга. Мастер на все руки.

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

Ваш адрес email не будет опубликован.