Ei Habr!
Talu ai nei na ou maua ai aʻu lava i se tulaga e tatau ai ona galue i totonu o se fesoʻotaʻiga tuʻufaʻatasia ma le le atoatoa le avanoa i luga ole Initaneti ma, e pei ona mafai ona e mateina mai le ulutala, Telegram na poloka i totonu. Ou te mautinoa o lenei tulaga ua masani ai le toatele.
E mafai ona ou faia e aunoa ma ni avefeau vave, ae o Telegram na ou manaʻomia mo le galuega. E le'i mafai ona fa'apipi'i le kalani i luga o se masini faigaluega, e le'i mafai fo'i ona fa'aogaina se komepiuta feavea'i. O le isi fofo e foliga mai o le faʻaaogaina
O le mea e laki ai, o le Webogram o se poloketi faʻapipiʻi avanoa o loʻo maua ai le code source
O le faʻapipiʻiina ma le faʻalauiloaina o ia lava e le faigata, peitaʻi, i tulaga o le gaioiga i totonu o se fesoʻotaiga ma poloka le avanoa i le Telegram servers, o le a sili atu ona e le fiafia nai lo le manuia, talu ai o le upega tafaʻilagi e tuʻuina atu talosaga i Telegram servers mai le masini a le tagata faʻaoga.
O le mea e laki ai, o se faʻaoga faigofie (ae leʻo manino). Ou te fia lapataia oe e le o aʻu le tusitala o lenei fofo. Sa mafai ona ou mauaina i totonu
I lalo ifo o le tipi o le ae maua ai le laasaga taʻitasi o lau faʻata Webogram ma le seti o le suiina o ana talosaga i Telegram servers e faʻaaoga ai le nginx.
Mo se faʻataʻitaʻiga, na ou filifilia se Ubuntu Server 18.04.3 fou faʻapipiʻi ma faʻafouina.
Lapataiga: O lenei aʻoaʻoga o le a le aofia ai faʻatonuga ile faʻatulagaina o se vaega ile nginx. E tatau ona e faia lenei mea e oe lava ia. O le aʻoaʻoga e faʻapea ua uma ona e faʻatulagaina se vaega i le ssl, ma o le 'auʻaunaga lava ia e te fuafua e faʻapipiʻi ai e mafai ona maua i le Telegram servers (i soʻo se auala e te manaʻo ai)
Sei o tatou manatu o le ip o lenei server o le 10.23.0.3, ma o le igoa ole igoa ole mywebogram.localhost
Faʻavae i luga o nei feagaiga, o le a ou tuʻuina atu faʻataʻitaʻiga o faʻasalalauga. Aua ne'i galo e sui le tau ia oe.
O lea ia tatou amata:
Ina ia taʻavale Webogram, matou te manaʻomia nodejs. Ona o le faaletonu, afai matou te faʻapipiʻiina mai fale teu oloa Ubuntu, matou te maua le nodejs version 8.x. Matou te manaʻomia le 12.x:
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt update && sudo apt -y install nodejs
Matou te filifilia le nofoaga o le a faʻavae ai la matou Webogram.
Mo se faʻataʻitaʻiga, seʻi o tatou tuʻuina i le aʻa o le lisi o fale. Ina ia faia lenei mea, faʻapipiʻi le fale teu oloa i la matou 'auʻaunaga:
cd ~ && git clone https://github.com/zhukov/webogram.git
O le isi laasaga o le faʻapipiʻi uma o faʻalagolago e manaʻomia e faʻatino ai le talosaga:
cd webogram && npm install
Se'i o tatou taumafai e fai se su'ega. Fa'atonu le fa'atonuga:
npm start
A maeʻa lena, matou te taumafai e tatala i le browser
http://10.23.0.3:8000/app/index.html
Afai e oʻo mai i lenei tulaga ua e faia mea uma saʻo, o le a tatala le itulau faʻatagaina Webogram.
Ole taimi nei e manaʻomia le faʻatulagaina o le talosaga e taʻavale o se auaunaga. Ina ia faia lenei mea, seʻi o tatou fatuina se faila
sudo touch /lib/systemd/system/webogram.service
tatala i so'o se fa'atonu ma tu'u i ai le fa'aaliga lea (ulufale i lou ala ile WorkDirectory)
[Unit]
Description=Webogram mirror
[Service]
WorkingDirectory=/home/tg/webogram
ExecStart=/usr/bin/npm start
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Ona matou faʻatautaia lea o poloaiga nei:
Fa'aaogā suiga
sudo systemctl daemon-reload
Fa'agaoioi le autorun:
sudo systemctl enable webogram.service
Tatou amata le auaunaga:
sudo systemctl start webogram.service
A maeʻa laasaga, o le a faʻaauau pea ona maua le Webogram i luga o le taulaga 8000.
Talu ai o le a matou faʻatulagaina avanoa i la matou Webogram e ala i le nginx, matou te tapunia le taulaga 8000 mo talosaga mai fafo.
Matou te faʻaogaina le aoga udf mo lenei mea (poʻo soʻo se auala talafeagai mo oe):
sudo ufw deny 8000
I le tulaga e te filifili pea e faʻaaoga le udf, ae ua le atoatoa i luga o le 'auʻaunaga, faʻaopoopo nisi tulafono (ina ia le malepelepe mea uma) ma mafai ai le udf:
sudo ufw allow ssh
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
O le isi, seʻi o tatou amata suia le configuration nginx.
E pei ona ou lapataia i luga, e manatu o se vaega ma ssl ua uma ona faʻatulagaina i lau 'auʻaunaga. O le a ou tosina atu i ai lou mafaufau i mea o le a manaʻomia ona faʻaopoopo i le faila o le faʻasologa o le domain ina ia galue lelei:
server {
...
location ^~ /pluto/apiw1/ {
proxy_pass https://pluto.web.telegram.org/apiw1/;
}
location ^~ /venus/apiw1/ {
proxy_pass https://venus.web.telegram.org/apiw1/;
}
location ^~ /aurora/apiw1/ {
proxy_pass https://aurora.web.telegram.org/apiw1/;
}
location ^~ /vesta/apiw1/ {
proxy_pass https://vesta.web.telegram.org/apiw1/;
}
location ^~ /flora/apiw1/ {
proxy_pass https://flora.web.telegram.org/apiw1/;
}
location ^~ /pluto-1/apiw1/ {
proxy_pass https://pluto-1.web.telegram.org/apiw1/;
}
location ^~ /venus-1/apiw1/ {
proxy_pass https://venus-1.web.telegram.org/apiw1/;
}
location ^~ /aurora-1/apiw1/ {
proxy_pass https://aurora-1.web.telegram.org/apiw1/;
}
location ^~ /vesta-1/apiw1/ {
proxy_pass https://vesta-1.web.telegram.org/apiw1/;
}
location ^~ /flora-1/apiw1/ {
proxy_pass https://flora-1.web.telegram.org/apiw1/;
}
location ^~ /DC1/ {
proxy_pass http://149.154.175.10:80/;
}
location ^~ /DC2/ {
proxy_pass http://149.154.167.40:80/;
}
location ^~ /DC3/ {
proxy_pass http://149.154.175.117:80/;
}
location ^~ /DC4/ {
proxy_pass http://149.154.175.50:80/;
}
location ^~ /DC5/ {
proxy_pass http://149.154.167.51:80/;
}
location ^~ /DC6/ {
proxy_pass http://149.154.175.100:80/;
}
location ^~ /DC7/ {
proxy_pass http://149.154.167.91:80/;
}
location ^~ /DC8/ {
proxy_pass http://149.154.171.5:80/;
}
location / {
auth_basic "tg";
auth_basic_user_file /etc/nginx/passwd.htpasswd;
proxy_pass http://localhost:8000/;
proxy_read_timeout 90s;
proxy_connect_timeout 90s;
proxy_send_timeout 90s;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
O mea matou te faʻaopopo i le nginx config:
- Matou te suia le nofoaga autu, lea o le a sui talosaga i le taulaga 8000, lea e tali mai ai Webogram
- Matou te tapunia le nofoaga autu e faʻaaoga ai le basic-auth. Ole la'asaga fa'atusa fa'atusa lea e tapunia ai la tatou talosaga mai le pu'eina o mata ma bots. (Ma ia aloese foi mai faafitauli i le polokaina)
- O le tele o nofoaga ma proxy_path i luga o le Telegram server o loʻo i ai tonu a matou faʻaiʻuga lea o le a matou sui ai a matou talosaga.
E le gata i lea, tatou faia se faila /etc/nginx/passwd.htpasswd;
ina ia i ai i le nginx se mea e siaki ai upu faʻaoga faʻaoga.
sudo apt install apache2-utils
sudo htpasswd -c /etc/nginx/passwd.htpasswd tg
Toe amata le nginx:
sudo systemctl restart nginx
Ole taimi nei ole a maua na'o le Webogram ile
E itiiti lava mea o totoe: o le a matou faia ni suiga laiti i le poloketi lava ia.
Tatala le faila i se faatonu ~/webogram/app/js/lib/mtproto.js
Ma aumai lona amataga i le fomu nei:
/*!
* Webogram v0.7.0 - messaging web application for MTProto
* https://github.com/zhukov/webogram
* Copyright (C) 2014 Igor Zhukov <[email protected]>
* https://github.com/zhukov/webogram/blob/master/LICENSE
*/
angular.module('izhukov.mtproto', ['izhukov.utils'])
.factory('MtpDcConfigurator', function () {
var sslSubdomains = ['pluto', 'venus', 'aurora', 'vesta', 'flora']
var dcOptions = Config.Modes.test
? [
{id: 1, host: 'mywebogram.localhost/DC1', port: 80},
{id: 2, host: 'mywebogram.localhost/DC2', port: 80},
{id: 3, host: 'mywebogram.localhost/DC3', port: 80}
]
: [
{id: 1, host: 'mywebogram.localhost/DC4', port: 80},
{id: 2, host: 'mywebogram.localhost/DC5', port: 80},
{id: 3, host: 'mywebogram.localhost/DC6', port: 80},
{id: 4, host: 'mywebogram.localhost/DC7', port: 80},
{id: 5, host: 'mywebogram.localhost/DC8', port: 80}
]
var chosenServers = {}
function chooseServer (dcID, upload) {
if (chosenServers[dcID] === undefined) {
var chosenServer = false,
i, dcOption
if (Config.Modes.ssl || !Config.Modes.http) {
var subdomain = sslSubdomains[dcID - 1] + (upload ? '-1' : '')
var path = Config.Modes.test ? 'apiw_test1' : '/apiw1/'
chosenServer = 'https://mywebogram.localhost/' + subdomain + path
return chosenServer
}
for (i = 0; i < dcOptions.length; i++) {
dcOption = dcOptions[i]
if (dcOption.id == dcID) {
chosenServer = 'http://' + dcOption.host + '/apiw1'
break
}
}
chosenServers[dcID] = chosenServer
}
...
A maeʻa lenei mea, e tatau ona e faʻafouina le itulau talosaga i le browser.
Tatala lau fa'amafanafanaga su'esu'e ma va'ai i talosaga feso'otaiga a le talosaga. Afai e aoga mea uma ma talosaga XHR e alu i lau 'auʻaunaga, ona saʻo lea o mea uma, ma ua faʻaogaina nei le Webogram e ala i le nginx.
Ou te faʻamoemoe o le a aoga lenei aʻoaʻoga i se isi tagata e ese mai ia te aʻu.
Faafetai tele i tagata uma na faitau seia oo i le iuga.
Afai ei ai se tasi e i ai ni faʻafitauli pe na ou faia ni mea le saʻo, o le a ou fiafia e tali ma taumafai e fesoasoani ia te oe i faʻamatalaga poʻo ile PM.
puna: www.habr.com