likeopera-backend/operetta.js

70 lines
3.0 KiB
JavaScript
Raw Normal View History

2016-10-09 21:06:57 +03:00
/**
* TODO:
2019-05-19 15:25:14 +03:00
* + скачивание вложений
* - сохранять заголовки в БД и возможно сохранять сообщения целиком ещё где-то
2019-05-16 21:29:58 +03:00
* - пометка прочитанным, просмотренным (seen)
2016-10-09 21:06:57 +03:00
* - фоновая индексация всех текстов сообщений в ящике
* - написание сообщений
* - ответ, пересылка
* - подсказка адресов
* - отправка вложений
* - пометить прочтённым/непрочтённым
* - переместить
* - удалить
* - пометить как спам
* - живое обновление (подписка view на новые сообщения)
* - настройки группировки (дата/прочитано/отмечено)
* - настройки сортировки (дата/тема/размер/возможно отправитель)
* - thread'ы (дискуссии)
* - метки (если вообще нужно)
* - совсем фантазии: интеграция с maillog'ом и серверным спамфильтром
*/
2016-08-28 00:18:04 +03:00
/**
* Нужные методы API:
* - список аккаунтов и папок
* - список сообщений в папке
* - содержимое сообщения
* - поиск по тексту
* - список тредов в папке, с сообщениями
* - проверить почту
* - пометить прочтённым
* - переместить
* - удалить
* - подсказка адресов To
* - отправить сообщение
*
* В определённом плане получается тупость - получается, что дублируешь
* функционал самого почтового сервера. Но шо ж с ним поделаешь, если он "ни ф силах"...
* Ведь по сути-то, MTA от такой штуки нужен только 1 метод: "добавить сообщение в папку".
*
2019-05-16 21:29:58 +03:00
* Но для сохранения совместимости с IMAP тут два пути - либо тащить всё к себе и потом
* делать свой IMAP сервер, либо всё-таки мучаться и дублировать функционал.
2016-08-28 00:18:04 +03:00
*/
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
2016-08-28 00:18:04 +03:00
2019-05-10 01:26:31 +03:00
if (process.env.DEBUG)
{
global.Promise = require('bluebird');
global.Promise.config({ longStackTraces: true });
}
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
async function startSync(cfg)
2016-06-27 14:14:10 +03:00
{
2019-05-10 01:26:31 +03:00
let dbh = new pg.Client(cfg.pg);
await dbh.connect();
let syncer = new Syncer(dbh);
let syncerweb = new SyncerWeb(syncer, dbh, cfg);
await syncer.init(cfg);
syncerweb.listen(8057);
2019-05-18 03:01:13 +03:00
//await syncer.syncAll();
}
2016-08-28 00:18:04 +03:00
let cfg = require('./cfg.json');
2019-05-10 01:26:31 +03:00
startSync(cfg).catch(e => { console.error(e.stack); });