La comunità di appassionati sta sviluppando Opengram, un'implementazione open source del backend del messenger Telegram. Il progetto è un server autonomo che implementa il protocollo MTProto (supportando il layer fino a 216), utilizzabile per sostituire l'infrastruttura server ufficiale di Telegram quando distribuito su attrezzature proprie. Si supportano i client ufficiali di Telegram (Telegram Desktop, app mobili) dopo aver modificato l'indirizzo del data center e la chiave RSA pubblica del server.
Opengram è un fork del progetto mytelegram. Il codice di Opengram è scritto in C# (.NET 9) e
viene distribuito in formato sorgente senza indicazione di licenza. Il progetto originale mytelegram è distribuito con licenza Apache 2.0, la quale, secondo il punto 4a, richiede di includere una copia del testo della licenza nella distribuzione delle opere derivate.
Il server è costruito su un insieme di microservizi eseguiti tramite Docker Compose: gateway delle connessioni MTProto, server di autorizzazione e scambio delle chiavi, server delle sessioni, server comandi e richieste (architettura CQRS), HTTP Bot API, API di amministrazione, server di archiviazione e distribuzione file, TURN/STUN per le chiamate e servizio di invio codici di autenticazione. Come infrastruttura si utilizzano MongoDB, Redis, RabbitMQ e MinIO.
Tra le funzionalità supportate: chat personali, gruppi, supergruppi e canali, chat segrete (end-to-end), chiamate vocali e video (tramite TURN/STUN e SFU mediasoup), bot e Bot API, impostazioni sulla privacy e autenticazione a due fattori, adesivi, reazioni ed emoji personalizzati; stelle (Stars) e regali (Star Gifts), inclusi il rivendita e l'upgrade; storie (Stories), temi e sfondi; messaggi pianificati ed autoeliminabili.
Fonte: opennet.ru
