Обращаюсь прежде всего ко всем умным людям, чтобы оценили техническое решение и внесли коррективы на этапе проектирования.
Хочу приделать к хотдогу возможность синхронизировать свои базы с нашими настольными фидошными комплектами.
Hа выходе хочу получить следующее: прозрачность (до определённой степени) работы с фидой на телефоне и на большом компе. Без разницы, где почта получена или читается.
Делать это планируется в 3 этапа следующим образом:
Этап 1. Виталий Аксёнов (2:463/3232) в данный момент делает jvm api для работы с базами сообщений фидо. Этот этап самый главный, потому что без него всё остальное не имеет смысла :)
Этап 2. Я, используя api, разработанное Виталием, делаю софтину под андроид, которая умеет следующее:
1. Импорт и экспорт всех сообщений в/из базы HotdogEd. Это и бэкап, и функция для тех, кто телефоны или планшеты берёт только в отпуск, а всё остальное время читает фидо с компьютера. 2. Импортирует в хотдог из фидошной базы только новые сообщения (ориентируясь по msgid). 3. Экспортирует в фидошную базу только новые сообщения из хотдога (по msgid). 4. Делать всё это по расписанию или по внешнему сигналу (сообщения от провайдера сообщений о получении новой почты).
Таким образом на этом этапе имеем возможность наполнять фидошную базу сообщений несколькими независимыми методами: или с хотдога, или с софта на компе. Функцию переноса базы с телефона на компьютер и обратно берёт на себя сам пользователь. Если даже наполнение базы произойдёт одновременно и на телефоне, и на компе (например, используются разные адреса), ничего страшного произойти не должно: там окажуться сообщения в итоге, которые есть в обоих источниках. Для телефона фидошная база вторична, её можно просто переписать. Первичным источником наполнения служит база, полученная с компа.
Этап 3. Создаётся код, который позволяет синхронизировать файлы базы сообщений самостоятельно. Он ничего не знает про фидошную бизнес-логику, но умеет работать с файлами. Его задача - выполнить роль dropbox, где на телефоне клиентом будет выступать само приложение, а на компьютере это будет отдельная софтина. Со стороны телефона будут поддерживаться блокировки (работа с фидошной базой не будет происходить, пока происходит синхронизация файлов).
Hу а теперь вопросы к общественности:
1. Какие форматы баз нужны и как в них обстоит дело с: а. Одновременной записью в них инфы из нескольких источников. б. Возможностями блокировки. в. Флагами прочитано/lastread?
2. Какие средства синхронизации файлов для п.2 вы бы предложили, помимо root+rsync? Есть ли среди них автоматические?
3. Какими средствами вы бы предпочли на компе делать п.3? Я как джавист готов сделать некое референсное приложение на springboot, соответственно ему будет нужна ява-машина и вычислительные ресурсы, работать всё это будет предположительно через rest api как обычный web-сервис (у спрингбута веб-сервер и контейнер приложений идёт в комплекте, так что юзер получит 1 jar-файл для запуска). Соответственно нужно будет в идеале иметь на машине с базами настроенный nginx или apache для проксирования на спрингбутовый томкат. Hе все могут чебе такое позволить, тем более у кого-то вообще на RPi станции крутятся или на роутерах. Готова ли общественность самостоятельно, хоть на php, реализовать для себя клиента протокола для приёма и отдачи файлов?
Что предложите в качестве авторизации и аутентификации? Всё должно максимально автоматизироваться, никаких ssh-keygen на телефоне :)
Скажу сразу: лично мне проще всего использовать на телефоне dropbox api или google drive. Hо не хотелось бы завязываться на проприетарные сервисы, тем более функция эта не сложная, а проект хочется сделать полностью открытым.
Большая просьба к советчикам: идей в голове много, времени мало, пожалуйста, если предлагаете что-то, говорите также, как это по-вашему лучше всего сделать, и, главное, зачем. Я в фидошных технологиях понимаю мало, так что полагаюсь на вашу мудрость.
Спасибо.
PS: в итоге может быть даже кто-то откажется от доставки фидошной почты на хотдоге в пользу доставки на компе и синхронизации в дальнейшем с хотдогом. Это одна из мыслей, которую я думаю.