Hey Habr!
Le déanaí fuair mé mé féin i gcás ina raibh sé riachtanach oibriú taobh istigh de líonra corparáideach le rochtain neamhiomlán ar an Idirlíon agus, mar is féidir leat buille faoi thuairim ón teideal, cuireadh bac ar Telegram ann. Tá mé cinnte go bhfuil an scéal seo eolach ag go leor.
Is féidir liom a dhéanamh gan teachtairí meandracha, ach ba é Telegram a bhí ag teastáil uaim don obair. Níorbh fhéidir an cliant a shuiteáil ar mheaisín oibre, ná níorbh fhéidir ríomhaire glúine pearsanta a úsáid. Is cosúil gur réiteach eile é a úsáid
Ar ámharaí an tsaoil, is tionscadal foinse oscailte é Webogram a bhfuil a cód foinse ar fáil i
Níl an tsuiteáil agus an seoladh féin deacair, áfach, i gcoinníollacha oibriúcháin laistigh de líonra le rochtain bhac ar fhreastalaithe Telegram, is mó an seans go mbeidh díomá ort ná mar a éireoidh leat, ós rud é go seolann an leagan gréasáin iarratais chuig freastalaithe Telegram ó mheaisín an úsáideora.
Ar ámharaí an tsaoil, is réiteach simplí go leor é seo (ach níl sé an-soiléir). Ba mhaith liom rabhadh a thabhairt duit nach mise údar an réitigh seo. D’éirigh liom é a fháil i
Faoi bhun an ghearrtha gheobhaidh tú socrú céim ar chéim de do scáthán Webogram agus socrú seachfhreastalaí a chuid iarrataí ar fhreastalaithe Telegram ag baint úsáide as nginx.
Mar shampla, roghnaigh mé Freastalaí Ubuntu 18.04.3 a bhí nua-shuiteáilte agus nuashonraithe.
Rabhadh: Ní chuimseoidh an teagasc seo treoracha maidir le fearann a bhunú i nginx. Ní mór duit é seo a dhéanamh tú féin. Glacann an rang teagaisc leis go bhfuil fearann le ssl cumraithe agat cheana féin, agus go bhfuil rochtain ag an bhfreastalaí féin ar a bhfuil sé beartaithe agat é a chumrú ar na freastalaithe Telegram (ar aon chaoi is mian leat)
Glacaimid leis gurb é 10.23.0.3 IP an fhreastalaí seo, agus is é mywebogram.localhost an t-ainm fearainn
Bunaithe ar na coinbhinsiúin seo, tabharfaidh mé samplaí de chumraíochtaí. Ná déan dearmad na luachanna a athrú chuig do chuid féin.
Mar sin, déanaimis tús:
Chun Webogram a rith, ní mór dúinn nódejs. De réir réamhshocraithe, má shuiteáilimid é ó stórtha Ubuntu, gheobhaidh muid nodejs leagan 8.x. Teastaíonn 12.x uainn:
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt update && sudo apt -y install nodejs
Roghnaímid an áit a mbeidh ár Webogram bunaithe.
Mar shampla, cuirimis é i bhfréamh an eolaire baile. Chun seo a dhéanamh, clónaigh an stór oifigiúil chuig ár bhfreastalaí:
cd ~ && git clone https://github.com/zhukov/webogram.git
Is é an chéad chéim eile na spleáchais go léir a theastaíonn chun an feidhmchlár a rith a shuiteáil:
cd webogram && npm install
Déanaimis triail as rith tástála. Rith an t-ordú:
npm start
Tar éis sin, déanaimid iarracht é a oscailt sa bhrabhsálaí
http://10.23.0.3:8000/app/index.html
Más rud é go dtí seo go bhfuil gach rud déanta agat i gceart, osclófar leathanach údaraithe Webogram.
Anois ní mór dúinn an feidhmchlár a chumrú le rith mar sheirbhís. Chun seo a dhéanamh, déanaimis comhad a chruthú
sudo touch /lib/systemd/system/webogram.service
oscail in eagarthóir ar bith é agus tabhair an chuma seo a leanas air (cuir isteach do chosán chuig 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
Ansin rithimid na horduithe seo a leanas:
Na hathruithe a chur i bhfeidhm
sudo systemctl daemon-reload
Cumasaigh uathrun:
sudo systemctl enable webogram.service
Cuirimis tús leis an tseirbhís:
sudo systemctl start webogram.service
Tar éis na céimeanna a chríochnú, beidh Webogram fós ar fáil ar phort 8000.
Ós rud é go mbeidh rochtain ar ár Webogram á bhunú againn trí nginx, dúnfaimid port 8000 le haghaidh iarratais ón taobh amuigh.
Bainimid úsáid as an áirgiúlacht udf chuige seo (nó aon mhodh atá áisiúil duit):
sudo ufw deny 8000
I gcás go gcinnfidh tú fós udf a úsáid, ach go bhfuil sé díchumasaithe ar an bhfreastalaí, cuir tuilleadh rialacha leis (ionas nach dtiteann gach rud as a chéile) agus cumasaigh udf:
sudo ufw allow ssh
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
Ar aghaidh, déanaimis tosú ag athrú cumraíocht nginx.
Mar a thug mé rabhadh thuas, glactar leis go bhfuil fearann le ssl cumraithe cheana féin ar do fhreastalaí. Ní tharraingeoidh mé d’aird ach ar an méid a chaithfear a chur leis an gcomhad cumraíochta fearainn le go n-oibreoidh sé i gceart:
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;
}
}
An méid a chuirimid le cumraíocht nginx:
- Athróimid an suíomh fréimhe, a dhéanfaidh iarratais seachfhreastalaí chuig port 8000, ar a bhfreagraíonn Webogram
- Dúnann muid an suíomh fréimhe ag baint úsáide as basic-auth. Is céim siombalach amháin é seo chun ár bhfeidhmchlár a dhúnadh ó shúile prying agus róbónna. (Agus freisin chun fadhbanna le blocáil a sheachaint)
- Is iad roinnt suíomhanna le seachfhreastalaí ar an bhfreastalaí Telegram go díreach ár gcríochphointí trína ndéanfaimid ár n-iarrataí a sheachfhreastalaí
Chomh maith leis sin, déanaimis comhad a chruthú /etc/nginx/passwd.htpasswd;
ionas go mbeidh rud éigin ag nginx chun pasfhocail úsáideora a sheiceáil leis.
sudo apt install apache2-utils
sudo htpasswd -c /etc/nginx/passwd.htpasswd tg
Atosaigh nginx:
sudo systemctl restart nginx
Anois ní bheidh Webogram ar fáil ach ag
Níl mórán fágtha: déanfaimid athruithe beaga ar an tionscadal féin.
Oscail an comhad i eagarthóir ~/webogram/app/js/lib/mtproto.js
Agus tabhair a thús don fhoirm seo a leanas:
/*!
* 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
}
...
Tar éis seo, ní mór duit leathanach an iarratais sa bhrabhsálaí a athnuachan.
Oscail do chonsól brabhsálaí agus féach ar iarratais líonra an fheidhmchláir. Má oibríonn gach rud agus go dtéann iarratais XHR chuig do fhreastalaí, déantar gach rud i gceart, agus cuirtear Webogram anois trí nginx.
Tá súil agam go mbeidh an rang teagaisc seo úsáideach do dhuine eile seachas dom.
Míle buíochas do gach éinne a léigh go dtí an deireadh.
Má tá aon deacrachtaí ag duine ar bith nó má rinne mé aon mhíchruinneas, beidh mé sásta freagra a thabhairt agus iarracht a dhéanamh cabhrú leat sna tuairimí nó sa PM.
Foinse: will.com