/** * TODO: * - исправить параллелизм запросов и sync'а * - фоновая индексация всех текстов сообщений в ящике * - скачивание вложений * - написание сообщений * - ответ, пересылка * - подсказка адресов * - отправка вложений * - пометить прочтённым/непрочтённым * - переместить * - удалить * - пометить как спам * - живое обновление (подписка view на новые сообщения) * - настройки группировки (дата/прочитано/отмечено) * - настройки сортировки (дата/тема/размер/возможно отправитель) * - thread'ы (дискуссии) * - метки (если вообще нужно) * - совсем фантазии: интеграция с maillog'ом и серверным спамфильтром */ /** * Нужные методы API: * - список аккаунтов и папок * - список сообщений в папке * - содержимое сообщения * - поиск по тексту * - список тредов в папке, с сообщениями * - проверить почту * - пометить прочтённым * - переместить * - удалить * - подсказка адресов To * - отправить сообщение * * В определённом плане получается тупость - получается, что дублируешь * функционал самого почтового сервера. Но шо ж с ним поделаешь, если он "ни ф силах"... * Ведь по сути-то, MTA от такой штуки нужен только 1 метод: "добавить сообщение в папку". * * Блин, IMAP - кривой протокол * - sequence number-ы это какая-то жопа * - обновления идут по sequence number-ам * - обновления идут только по активному mailbox-у * - а ещё есть какие-то сраные неймспейсы */ process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; const pg = require('pg'); const Syncer = require('./Syncer.js'); const SyncerWeb = require('./SyncerWeb.js'); let syncer = new Syncer(pg); let syncerweb = new SyncerWeb(syncer, pg, cfg); async function startSync(cfg) { let connection = new pg.Client(cfg.pg); await connection.connect(); await syncer.init(cfg, connection); await syncer.syncAll(); } let cfg = require('./cfg.json'); startSync(cfg).catch(console.error); syncerweb.listen(8057);