Logáil isteach uathoibríoch chuig comhdhálacha Lync ar Linux

Hey Habr!

Maidir liom féin, tá an frása seo cosúil le hello world, ó tháinig mé ar deireadh mo chéad fhoilsiú. Chuir mé deireadh leis an nóiméad iontach seo ar feadh i bhfad, ós rud é nach raibh aon rud le scríobh faoi, agus freisin níor theastaigh uaim tarraing ar rud éigin a bhí sucked go minic cheana féin. Go ginearálta, le haghaidh mo chéad fhoilseacháin bhí rud éigin bunaidh uaim, a bhí úsáideach do dhaoine eile agus ina raibh cineál éigin dúshláin agus réiteach fadhbanna. Agus anois is féidir liom é seo a roinnt. Anois, déanaimis labhairt faoi gach rud in ord.

Iontráil

Thosaigh sé ar fad nuair a d'íoslódáil mé Linux Mint ar mo ríomhaire oibre tamall ó shin. Is dócha go bhfuil a fhios ag go leor daoine go bhfuil Pidgin leis an breiseán Sipe ina athsholáthar iomlán oiriúnach do Microsoft Lync (ar a dtugtar Skype for business anois) do chórais Linux. Mar gheall ar shonraí mo chuid oibre, is minic a bhíonn orm páirt a ghlacadh i gcomhdhálacha SIP, agus nuair a bhí mé i mo oibrí Windows, bhí sé bunúsach dul isteach i gcomhdhálacha: faigheann muid cuireadh tríd an bpost, cliceáil ar an nasc logáil isteach, agus táimid réidh le dul. .

Nuair a d'athraigh tú go dtí an taobh dorcha de Linux, d'éirigh gach rud beagán níos casta: ar ndóigh, is féidir leat comhdhálacha a chur isteach i Pidgin freisin, ach chun é seo a dhéanamh ní mór duit an rogha páirt a ghlacadh sa chomhdháil a roghnú sa roghchlár in airíonna do chuntais SIP agus i an fhuinneog a osclaíonn, cuir isteach nasc chuig an gcomhdháil nó cuir isteach ainm an eagraí agus conf id. Agus tar éis roinnt ama thosaigh mé ag smaoineamh: "an féidir é seo a shimpliú ar bhealach éigin?" Sea, b'fhéidir go ndéarfá, cén fáth a bhfuil sé seo de dhíth ort?

Céim 1: Taighde

“Má fhaigheann tú whist i do cheann, ní féidir leat é a bhualadh le cuaille,” a dúirt Nekrasov ina shaothar “Who Lives Well in Rus’.”

Mar sin, nuair a chuaigh an smaoineamh isteach i mo cheann, tar éis tamaill tháinig an chéad smaoineamh chun feidhme. Bhí an chuma ar gach rud simplí - ní mór duit rochtain ar naisc a thascradh meet.company.com/user/confid — suiteáil próiseas iarratais gréasáin áitiúil ar do charr ag 127.0.0.1 agus in /etc/hosts cuir iontráil statach d'fhearann ​​na cuideachta trína dtéann tú isteach sa chomhdháil, ag díriú ar localhost. Ansin, caithfidh an freastalaí gréasáin seo an nasc a tháinig chuige a phróiseáil agus é a aistriú ar bhealach éigin taobh istigh de Pidgin (déarfaidh mé ar an bpointe boise nach raibh aon smaoineamh agam fós ag an bpointe seo conas é a thabhairt dó ar chor ar bith). Tá boladh ar an réiteach, ar ndóigh, cosúil le crutches, ach is ríomhchláraitheoirí muid, ní chuireann crutches eagla orainn (cac).

Ansin, de sheans, d'oscail mé ar bhealach éigin an nasc cuireadh i Google Chrome (agus de ghnáth bainim úsáid as Mozilla Firefox i gcónaí). Agus chun mo iontas, d'fhéach an leathanach gréasáin go hiomlán difriúil - ní raibh aon fhoirm chun sonraí úsáideora a iontráil agus díreach tar éis dul isteach sa leathanach bhí iarratas ann rud éigin a oscailt tríd xdg-oscailte. Díreach le haghaidh spraoi, cliceáil mé “tá” agus tagann teachtaireacht earráide - ní féidir an nasc lync15:confjoin?url=https://meet.company.com/user/confid a oscailt. Hmm. Cén cineál xdg-oscailte é seo agus cad a theastaíonn uaidh chun naisc den sórt sin a oscailt? Léirigh léamh iarbháis ar na doiciméid gur láimhseálaí GUI é a chuidíonn le feidhmchláir ghaolmhara a rith le prótacail don scéim uri nó le cineálacha sainiúla comhaid. Déantar cumainn a chumrú trí mhapáil de chineál míme. Mar sin feicimid go bhfuil cuardach á dhéanamh againn ar iarratas comhoiriúnaithe do scéim uri ainmnithe lionc15 agus cuirtear an nasc ar aghaidh chuig xdg-open, agus ansin, go teoiriciúil, ba cheart é a chur ar aghaidh chuig feidhmchlár éigin atá freagrach as an gcineál seo nasc. Rud atá, ar ndóigh, nach bhfuil againn inár gcóras. Mura bhfuil, cad a dhéanann siad sa domhan foinse oscailte? Sin ceart, scríobhfaimid féin é.

Léirigh tuilleadh tumoideachais i saol Linux agus go háirithe i staidéar a dhéanamh ar conas a oibríonn an bhlaosc grafach (timpeallacht deisce, DE), dála an scéil, tá Xfce agam i Linux Mint, go scríobhtar feidhmchláir agus an cineál míme a bhaineann leis go díreach i comhaid aicearra leis an síneadh .desktop. Bhuel, cén fáth nach, cruthaím aicearra feidhmchláir shimplí, ar cheart dó script bash a sheoladh go simplí agus an argóint a cuireadh ar aghaidh chuige a aschur chuig an consól, ní chuirim ach an comhad aicearra féin ar fáil:

[Desktop Entry]
Name=Lync
Exec=/usr/local/bin/lync.sh %u
Type=Application
Terminal=false
Categories=Network;InstantMessaging;
MimeType=x-scheme-handler/lync15;

Seolaim xdg-open ón gconsól, ag dul thar an nasc céanna a thagann ón mbrabhsálaí agus... bummer. Arís deir sé nach féidir leis an nasc a phróiseáil.

Mar a tharla, níor nuashonraigh mé an t-eolaire de chineálacha mím gaolmhara le m'iarratas. Déantar é seo le hordú simplí:

xdg-mime default lync.desktop x-scheme-handler/lync15

a dhéanann eagarthóireacht ar an gcomhad go simplí ~/.config/mimeapps.list.

Déan iarracht uimhir 2 leis an nglao xdg-oscailte - agus teip arís. Ní dhéanfaidh aon ní, ní chuireann deacrachtaí eagla orainn, ach cuireann siad ár leas chun cinn. Agus an chumhacht bash ar fad (i.e. rianú) armtha againn, tumaimid ceann ar dtús chun dífhabhtaithe. Tá sé tábhachtach a thabhairt faoi deara anseo nach bhfuil i xdg-open ach script bhlaosc.

bash -x xdg-open $url

Nuair a dhéantar anailís ar an aschur tar éis é a rianú éiríonn sé rud beag soiléir go n-aistrítear rialú ansin go dtí exo-oscailte. Agus is comhad dénártha é seo cheana féin agus tá sé níos deacra a thuiscint cén fáth go dtugann sé cód tuairisceáin nár éirigh leis nuair a théann sé nasc chuige in argóint.

Tar éis dom féachaint trí na hinmheánacha de xdg-open, fuair mé amach go ndéanann sé anailís ar pharaiméadair chomhshaoil ​​éagsúla agus go dtéann sé i gceannas ar roinnt uirlisí chun naisc chomhaid a bhaineann go sonrach le RO áirithe a oscailt, nó go bhfuil feidhm chúltaca aige oscailte_chineálach

open_xfce()
{
if exo-open --help 2>/dev/null 1>&2; then
exo-open "$1"
elif gio help open 2>/dev/null 1>&2; then
gio open "$1"
elif gvfs-open --help 2>/dev/null 1>&2; then
gvfs-open "$1"
else
open_generic "$1"
fi

if [ $? -eq 0 ]; then
exit_success
else
exit_failure_operation_failed
fi
}

Leabóidh mé go tapa anseo hack beag le hanailís ar an argóint a ritheadh ​​agus má tá ár bhfotheaghrán ar leith suite ann lync15:, ansin aistrímid rialú láithreach chuig an bhfeidhm oscailte_chineálach.

Déan iarracht uimhir 3 agus an dóigh leat gur oibrigh sé? Sea, anois, ar ndóigh. Ach tá an teachtaireacht earráide athrú cheana féin, tá sé seo cheana féin dul chun cinn - anois bhí sé ag insint dom nach bhfuarthas an comhad agus i bhfoirm comhaid scríobh sé dom an nasc céanna a ritheadh ​​mar argóint.

An uair seo d'éirigh sé amach a bheith ina fheidhm is_comhad_url_or_path, a dhéanann anailís ar an nasc comhaid a cuireadh ar aghaidh chuig an ionchur: comhad: // nó an cosán go dtí an comhad nó rud éigin eile. Agus níor oibrigh an tseiceáil i gceart toisc go bhfuil uimhreacha ag ár réimír (scéim url), agus ní sheiceálann an slonn rialta ach an tacar carachtar comhdhéanta de :alfa: poncanna agus daiseanna. Tar éis dul i gcomhairle leis an gcaighdeán rfc3986 le haghaidh aitheantóir acmhainne aonfhoirmeach Ba léir nach bhfuil aon rud á shárú ag Microsoft an uair seo (cé go raibh a leithéid de leagan agam). Níl san aicme charachtair :alpha: ach litreacha na haibítre Laidine. Athraím an tseiceáil rialta go alfa-uimhriúil go tapa. Arna dhéanamh, tá tú iontach, tosaíonn gach rud ar deireadh, rialú tar éis gach seiceáil a thabhairt ar ár n-iarratas script, taispeántar ár nasc ar an consól, tá gach rud mar ba chóir a bheith. Tar éis seo, tosaíonn mé ag amhras go bhfuil na fadhbanna go léir le exo-open freisin mar gheall ar bhailíochtú an fhormáid nasc mar gheall ar na huimhreacha sa scéim. Chun an hipitéis a thástáil, athraím clárú cineál míme an iarratais go scéim amháin lync agus voila - oibríonn gach rud gan an fheidhm open_xfce a shárú. Ach ní chuideoidh sé seo linn ar bhealach ar bith, mar cruthaíonn an leathanach gréasáin chun dul isteach sa chomhdháil nasc le lync15.

Mar sin, tá an chéad chuid den turas críochnaithe. Tá a fhios againn conas glao nasc a thascradh agus ansin ní mór é a phróiseáil ar bhealach éigin agus é a chur ar aghaidh taobh istigh de Pidgin. D'fhonn tuiscint a fháil ar an gcaoi a n-oibríonn sé go hinmheánach agus sonraí á n-iontráil trí nasc sa roghchlár “join a conference”, chlónáil mé stór Git an tionscadail Sipe agus d'éirigh liom dul isteach sa chód arís. Ach ansin, ar an dea-uair, mheall na scripteanna sa chatalóg mé rannchuidiú/dbus/:

  • sipe-join-comhdháil-le-uri.pl
  • sipe-join-comhdháil-le-eagraí-agus-id.pl
  • sipe-call-fón-uimhir.pl
  • SipeHelper.pm

Tarlaíonn sé go bhfuil an breiseán Sipe ar fáil le haghaidh idirghníomhú trí dbus (bus deisce) agus taobh istigh de na scripteanna tá samplaí de bheith páirteach i gcomhdháil trí nasc, trí ainm an eagraí agus conf-id, nó is féidir leat glaoch a thionscnamh trí sip . Is é seo go díreach cad a bhí muid ag iarraidh.

Céim 2. Láimhseálaí autojoin a chur i bhfeidhm

Ós rud é go bhfuil samplaí réidh de dhéantús an Pearl, chinn mé a úsáid sipe-join-comhdháil-le-uri.pl agus é a mhodhnú beagán a oireann duit féin. Is féidir liom scríobh i Pearl, mar sin níor chruthaigh sé aon deacrachtaí ar leith.

Tar éis an script a thástáil ar leithligh, scríobh mé a ghlao isteach sa chomhad lync.deasc. Agus bhí sé bua! Nuair a bheidh tú ag dul isteach sa leathanach ceangail comhdhála agus ag ligean do xdg-open a rith, d'osclódh an fhuinneog aníos comhdhála ó Pidgin go huathoibríoch. Conas a bhí áthas orm.
Spreagtha ag an rathúlacht, chinn mé an rud céanna a dhéanamh do mo phríomhbhrabhsálaí, Mozilla Firefox. Nuair a logáil tú isteach tríd an sionnach, osclaíonn leathanach údaraithe agus ag bun an leathanaigh tá cnaipe páirt a ghlacadh ag baint úsáide as cumarsáide oifige. Bhí sí an ceann a tharraing mo aird. Nuair a chliceálann tú air sa bhrabhsálaí, téann sé chuig an seoladh:

conf:sip:{user};gruu;opaque=app:conf:focus:id:{conf-id}%3Frequired-media=audio

a insíonn sé dom go cineálta nach bhfuil a fhios aige conas é a oscailt agus, b’fhéidir, nach bhfuil feidhmchlár gaolmhar agam ar a leithéid de phrótacal. Bhuel, táimid tar éis dul tríd seo cheana féin.

Cláraím go tapa m'iarratas ar script freisin don scéim uri conf agus... ní tharlaíonn tada. Coinníonn an brabhsálaí ag gearán nach bhfuil aon fheidhmchlár ann a láimhseálann mo naisc. Sa chás seo, oibríonn glaoch ar xdg-open ón gconsól le paraiméadair go foirfe.

“Socraigh láimhseálaí prótacail saincheaptha in firefox” - chuaigh mé ar líne leis an gceist seo. Tar éis dul trí roinnt plé ar stackoverflow (agus cén áit a mbeimis gan é), is cosúil go bhfuarthas an freagra. Ní mór duit paraiméadar speisialta a chruthú i about: config (ar ndóigh in ionad foo le conf):

network.protocol-handler.expose.foo = false

Cruthaímid é, osclaíonn muid an nasc agus ... gan aon ádh mar sin. Deir an brabhsálaí, amhail is nár tharla aon rud, nach bhfuil a fhios aige ár n-iarratas.

Tá an doiciméadú oifigiúil á léamh agam maidir le prótacal a chlárú ó Mozilla, tá rogha ann cumainn a chlárú sa deasc gnome féin (ag cur conf in ionad foo, ar ndóigh):

gconftool-2 -s /desktop/gnome/url-handlers/foo/command '/path/to/app %s' --type String
gconftool-2 -s /desktop/gnome/url-handlers/foo/enabled --type Boolean true

Cláraím, osclaíonn mé an brabhsálaí... agus arís an féasóg.

Seo chugat líne ón doiciméadú mo shúil:

An chéad uair eile a chliceálann tú ar nasc foo de chineál prótacail iarrfar ort cén feidhmchlár chun é a oscailt.

— Seamhan Semenych
- Ach

Ní chliceáilimid ar an nasc, ach ní athraíonn an leathanach gréasáin ach window.location trí javascript. Scríobhaim comhad html simplí le nasc chuig an bprótacal conf, é a oscailt sa bhrabhsálaí, cliceáil ar an nasc - Yos! Osclaíonn fuinneog ag fiafraí cén t-iarratas ar gá dúinn ár nasc a oscailt, agus tá ár n-iarratas Lync ar an liosta cheana féin - chláraigh muid go hionraic é ar gach bealach is féidir. Anseo sa fhuinneog tá ticbhosca “cuimhnigh an rogha agus oscail naisc inár bhfeidhmchlár i gcónaí”, marcáil é, cliceáil ceart go leor. Agus is é seo an dara bua - osclaíonn an fhuinneog comhdhála. Ag an am céanna, oibríonn oscailt comhdhálacha ní hamháin nuair a chliceálann tú ar nasc, ach freisin nuair a bhogann tú ón leathanach ceangail ní mór dúinn go dtí an chomhdháil.

Ansin sheiceáil mé, paraiméadair a scriosadh líonra.prótacal-láimhseálaí.nochtadh.conf ní raibh aon tionchar aige ar oibriú an phrótacail in Fox. Lean na naisc ag obair.

Conclúid

Tá mo chuid oibre go léir uaslódáilte agam chuig stór GitHub; beidh naisc chuig na hacmhainní go léir ag deireadh an ailt.
Beidh suim agam aiseolas a fháil uathu siúd atá ag iarraidh mo chuid oibre a úsáid. Ba chóir dom a thabhairt faoi deara láithreach nach ndearna mé an fhorbairt go léir ach amháin le haghaidh mo chóras Linux Mint, agus mar sin b'fhéidir nach n-oibreoidh roinnt dáiltí nó deasc eile sa leagan sin. Nó in áit sin, táim beagnach cinnte faoi seo, mar níor bhreac mé ach feidhm 1 in xdg-open nach mbaineann ach le mo RO. Más mian leat tacaíocht a chur le córais nó deasc eile, scríobh iarratais tarraingthe chugam ar Github.

Thóg an tionscadal iomlán tráthnóna 1 le críochnú.

Naisc:

Foinse: will.com

Add a comment