2016-10-09 21:06:57 +03:00
|
|
|
|
/**
|
|
|
|
|
* TODO:
|
|
|
|
|
* - исправить параллелизм запросов и sync'а
|
|
|
|
|
* - фоновая индексация всех текстов сообщений в ящике
|
|
|
|
|
* - скачивание вложений
|
|
|
|
|
* - написание сообщений
|
|
|
|
|
* - ответ, пересылка
|
|
|
|
|
* - подсказка адресов
|
|
|
|
|
* - отправка вложений
|
|
|
|
|
* - пометить прочтённым/непрочтённым
|
|
|
|
|
* - переместить
|
|
|
|
|
* - удалить
|
|
|
|
|
* - пометить как спам
|
|
|
|
|
* - живое обновление (подписка view на новые сообщения)
|
|
|
|
|
* - настройки группировки (дата/прочитано/отмечено)
|
|
|
|
|
* - настройки сортировки (дата/тема/размер/возможно отправитель)
|
|
|
|
|
* - thread'ы (дискуссии)
|
|
|
|
|
* - метки (если вообще нужно)
|
|
|
|
|
* - совсем фантазии: интеграция с maillog'ом и серверным спамфильтром
|
|
|
|
|
*/
|
2016-08-28 00:18:04 +03:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Нужные методы API:
|
|
|
|
|
* - список аккаунтов и папок
|
|
|
|
|
* - список сообщений в папке
|
|
|
|
|
* - содержимое сообщения
|
|
|
|
|
* - поиск по тексту
|
|
|
|
|
* - список тредов в папке, с сообщениями
|
|
|
|
|
* - проверить почту
|
|
|
|
|
* - пометить прочтённым
|
|
|
|
|
* - переместить
|
|
|
|
|
* - удалить
|
|
|
|
|
* - подсказка адресов To
|
|
|
|
|
* - отправить сообщение
|
|
|
|
|
*
|
|
|
|
|
* В определённом плане получается тупость - получается, что дублируешь
|
|
|
|
|
* функционал самого почтового сервера. Но шо ж с ним поделаешь, если он "ни ф силах"...
|
|
|
|
|
* Ведь по сути-то, MTA от такой штуки нужен только 1 метод: "добавить сообщение в папку".
|
2019-05-08 16:39:14 +03:00
|
|
|
|
*
|
|
|
|
|
* Блин, IMAP - кривой протокол
|
|
|
|
|
* - sequence number-ы это какая-то жопа
|
|
|
|
|
* - обновления идут по sequence number-ам
|
|
|
|
|
* - обновления идут только по активному mailbox-у
|
|
|
|
|
* - а ещё есть какие-то сраные неймспейсы
|
2016-08-28 00:18:04 +03:00
|
|
|
|
*/
|
|
|
|
|
|
2019-05-08 16:39:14 +03:00
|
|
|
|
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
|
2016-08-28 00:18:04 +03:00
|
|
|
|
|
2019-05-08 16:39:14 +03:00
|
|
|
|
const pg = require('pg');
|
2016-09-11 22:04:37 +03:00
|
|
|
|
const Syncer = require('./Syncer.js');
|
|
|
|
|
const SyncerWeb = require('./SyncerWeb.js');
|
2016-07-31 15:05:14 +03:00
|
|
|
|
|
2019-05-08 16:39:14 +03:00
|
|
|
|
let syncer = new Syncer(pg);
|
|
|
|
|
let syncerweb = new SyncerWeb(syncer, pg, cfg);
|
2016-08-28 00:18:04 +03:00
|
|
|
|
|
2019-05-08 16:39:14 +03:00
|
|
|
|
async function startSync(cfg)
|
2016-06-27 14:14:10 +03:00
|
|
|
|
{
|
2019-05-08 16:39:14 +03:00
|
|
|
|
let connection = new pg.Client(cfg.pg);
|
|
|
|
|
await connection.connect();
|
|
|
|
|
await syncer.init(cfg, connection);
|
|
|
|
|
await syncer.syncAll();
|
|
|
|
|
}
|
2016-08-28 00:18:04 +03:00
|
|
|
|
|
2019-05-08 16:39:14 +03:00
|
|
|
|
let cfg = require('./cfg.json');
|
|
|
|
|
startSync(cfg).catch(console.error);
|
2016-10-03 16:55:09 +03:00
|
|
|
|
syncerweb.listen(8057);
|