Log a-steach gu fèin-ghluasadach gu co-labhairtean Lync air Linux

Hi Habr!

Dhòmhsa, tha an abairt seo coltach ri hello world, oir fhuair mi mu dheireadh chun chiad fhoillseachadh agam. Chuir mi dheth an t-àm iongantach seo airson ùine mhòr, leis nach robh dad ri sgrìobhadh mu dheidhinn, agus cha robh mi cuideachd airson a bhith a’ suirghe air rudeigin a bha air a bhith air a suathadh grunn thursan. San fharsaingeachd, airson a’ chiad fhoillseachadh agam bha mi ag iarraidh rudeigin tùsail, feumail do dhaoine eile agus anns an robh seòrsa de dhùbhlan agus fuasgladh cheistean. Agus a-nis is urrainn dhomh seo a cho-roinn. A-nis leigidh sinn bruidhinn mu dheidhinn a h-uile dad ann an òrdugh.

Clàrachadh

Thòisich e uile nuair a dh 'luchdaich mi sìos Linux Mint air a' choimpiutair obrach agam o chionn ùine. Is dòcha gu bheil fios aig mòran dhaoine gu bheil Pidgin leis a’ plugan Sipe na àite gu tur freagarrach airson Microsoft Lync (ris an canar Skype airson gnìomhachas a-nis) airson siostaman Linux. Air sgàth mion-fhiosrachadh na h-obrach agam, feumaidh mi pàirt a ghabhail ann an co-labhairtean SIP gu tric, agus nuair a bha mi nam neach-obrach Windows, bha e bunaiteach a dhol a-steach do cho-labhairtean: gheibh sinn cuireadh tron ​​​​phost, cliog air a’ cheangal logadh a-steach, agus tha sinn deiseil airson a dhol. .

Nuair a thionndaidheas tu gu taobh dorcha Linux, dh’ fhàs a h-uile càil rudeigin nas toinnte: gu dearbh, faodaidh tu cuideachd logadh a-steach gu co-labhairtean ann am Pidgin, ach airson seo a dhèanamh feumaidh tu an roghainn co-labhairt a thaghadh sa chlàr ann an feartan a’ chunntais SIP agad agus san uinneig a tha a’ fosgladh, cuir a-steach ceangal ris a’ cho-labhairt no cuir a-steach ainm an eagraiche agus conf id. Agus an dèidh beagan ùine thòisich mi a 'smaoineachadh: "a bheil e comasach dòigh air choireigin seo a dhèanamh nas sìmplidhe?" Seadh, is dòcha gu bheil thu ag ràdh, carson an ifrinn a tha feum agad air seo? B’ fheàrr leam suidhe air Windows agus gun a bhith a’ sèideadh m’ inntinn.

Ceum 1: Rannsachadh

“Ma gheibh thu beagan whim nad cheann, chan urrainn dhut a chuir a-mach le geall,” thuirt Nekrasov na obair “Who Lives Well in Rus’.”

Mar sin, aon uair ‘s gun deach an smuain a-steach nam cheann, às deidh ùine dh’ èirich a’ chiad bheachd airson buileachadh. Bha coltas gu robh a h-uile dad sìmplidh - feumaidh tu casg a chuir air ruigsinneachd air ceanglaichean meet.company.com/user/confid - cuir a-steach pròiseas tagraidh lìn ionadail air a’ chàr agad aig 127.0.0.1 agus ann an /etc/hosts cuir a-steach inntrig statach airson àrainn a’ chompanaidh tro bheil thu a’ dol a-steach don cho-labhairt, a’ comharrachadh localhost. An ath rud, feumaidh am frithealaiche lìn seo an ceangal a thàinig thuige a phròiseasadh agus dòigh air choireigin a ghluasad a-steach do Pidgin (canaidh mi anns a’ bhad nach robh fios agam aig an ìre seo fhathast ciamar a thug mi dha e idir). Tha am fuasgladh, gu dearbh, a’ fàileadh mar bagaichean, ach tha sinn nar luchd-prògramaidh, chan eil crutches a’ cur eagal oirnn (shit).

An uairsin, le cothrom, dh’ fhosgail mi dòigh air choireigin an ceangal cuireadh ann an Google Chrome (agus mar as trice bidh mi an-còmhnaidh a’ cleachdadh Mozilla Firefox). Agus gu mo iongnadh, bha an duilleag lìn a’ coimhead gu tur eadar-dhealaichte - cha robh foirm ann airson dàta luchd-cleachdaidh a chuir a-steach agus dìreach às deidh a dhol a-steach don duilleag bha iarrtas ann airson rudeigin fhosgladh troimhe xdg-fhosgailte. Dìreach airson spòrs, cliogaidh mi “tha” agus nochdaidh teachdaireachd mearachd - chan urrainnear an ceangal lync15:confjoin?url=https://meet.company.com/user/confid fhosgladh. Hmm. Dè an seòrsa xdg-open a tha seo agus dè a dh’ fheumas e gus na ceanglaichean sin fhosgladh? Nochd leughadh post-mortem de na sgrìobhainnean gur e inneal-làimhseachaidh GUI a th’ ann a chuidicheas le bhith a’ ruith thagraidhean co-cheangailte riutha an dàrna cuid le protocolaidhean airson an sgeama uri no le seòrsaichean faidhle sònraichte. Tha comainn air an rèiteachadh tro mhapadh seòrsa mime. Mar sin chì sinn gu bheil sinn a’ ruith rannsachadh airson tagradh co-ionann airson sgeama uri ainmichte lionc15 agus thèid an ceangal a chuir gu xdg-open, a bu chòir an uairsin, ann an teòiridh, a chuir gu tagradh air choireigin a tha an urra ris an t-seòrsa ceangail seo. Dè, gu dearbh, nach eil againn san t-siostam againn. Mura h-eil, dè a bhios iad a’ dèanamh anns an t-saoghal stòr fosgailte? Tha sin ceart, sgrìobhaidh sinn sinn fhìn e.

Sheall tuilleadh bogadh ann an saoghal Linux agus gu sònraichte ann a bhith a’ sgrùdadh mar a tha an t-slige ghrafaigeach (àrainneachd deasg, DE) ag obair, co-dhiù, tha Xfce agam ann an Linux Mint, gu bheil tagraidhean agus an seòrsa mime co-cheangailte ris mar as trice air an sgrìobhadh gu dìreach ann an faidhlichean goirid leis an leudachadh .desktop. Uill, carson nach cruthaich, bidh mi a’ cruthachadh ath-ghoirid tagraidh sìmplidh, a bu chòir dìreach sgriobt bash a chuir air bhog agus an argamaid a chaidh a chuir thuige chun consol a chuir a-mach, cha toir mi seachad ach am faidhle ath-ghoirid fhèin:

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

Bidh mi a 'cur air bhog xdg-open bhon chonsail, a' dol seachad air an aon cheangal a thig bhon bhrobhsair agus ... bummer. A-rithist tha e ag ràdh nach urrainn dha an ceangal a phròiseasadh.

Mar a thionndaidh e, cha do dh’ ùraich mi an eòlaire de sheòrsan mime co-cheangailte ris an tagradh agam. Tha seo air a dhèanamh le òrdugh sìmplidh:

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

a tha dìreach a 'deasachadh an fhaidhle ~/.config/mimeapps.list.

Feuch àireamh 2 leis a’ ghairm xdg-open - agus a-rithist teip. Chan eil dad, chan eil duilgheadasan a 'cur eagal oirnn, ach dìreach a' brosnachadh ar ùidh. Agus le armachd leis a h-uile cumhachd bash (ie lorg), bidh sinn a’ dàibheadh ​​​​an toiseach gu bhith a ’deasbad. Tha e cudromach toirt fa-near an seo nach eil ann an xdg-open ach sgriobt shligean.

bash -x xdg-open $url

Le bhith a’ mion-sgrùdadh an toraidh às deidh lorg bidh e beagan soilleir gu bheil smachd an uairsin air a ghluasad gu exo-fhosgailte. Agus is e faidhle dà-chànanach a tha seo mar-thà agus tha e nas duilghe a thuigsinn carson a thilleas e còd tilleadh neo-shoirbheachail nuair a chuireas e ceangal ris ann an argamaid.

An dèidh coimhead tro na taobh a-staigh de xdg-open, fhuair mi a-mach gu bheil e a’ dèanamh mion-sgrùdadh air diofar pharaimearan àrainneachd agus a’ dol thairis air smachd nas fhaide air adhart gu cuid de dh’ innealan airson ceanglaichean faidhle fhosgladh a tha sònraichte do DE sònraichte, no gu bheil gnìomh fallback aige. fosgailte_generic

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
}

Cuiridh mi a-steach gu sgiobalta hack beag an seo le mion-sgrùdadh air an argamaid a chaidh seachad agus ma tha an substring sònraichte againn suidhichte an sin lionc 15:, an uairsin bidh sinn sa bhad a’ gluasad smachd chun ghnìomh fosgailte_generic.

Feuch àireamh 3 agus an do dh’obraich e? Yeah, a-nis, gu dearbh. Ach tha an teachdaireachd mearachd air atharrachadh mar-thà, tha seo mar adhartas mar-thà - a-nis bha e ag innse dhomh nach deach am faidhle a lorg agus ann an cruth faidhle sgrìobh e thugam an aon cheangal a chaidh seachad mar argamaid.

An turas seo thionndaidh e a-mach gur e gnìomh a bh’ ann is_file_url_or_path, a nì mion-sgrùdadh air a’ cheangal faidhle a chaidh a chuir a-steach: faidhle: // no an t-slighe chun fhaidhle no rudeigin eile. Agus cha do dh'obraich an t-seic gu ceart air sgàth 's gu bheil àireamhan aig an ro-leasachan againn (sgeama url), agus chan eil an abairt àbhaisteach a' dèanamh sgrùdadh ach air an t-seata charactaran anns a bheil :alpha: dotagan agus dashes. Às deidh co-chomhairle a chumail ris an inbhe rfc3986 airson aithnichear goireas èideadh Dh'fhàs e soilleir nach eil Microsoft an turas seo a’ briseadh dad (ged a bha an leithid de dhreach agam). Dìreach an clas caractar :alpha: chan eil ann ach litrichean na h-aibidil Laideann. Bidh mi gu sgiobalta ag atharrachadh an t-seic àbhaisteach gu alphanumeric. Dèan, tha thu iongantach, tòisichidh a h-uile càil mu dheireadh, smachd às deidh a h-uile sgrùdadh a thoirt don tagradh sgriobt againn, tha an ceangal againn air a thaisbeanadh air a’ chonsail, tha a h-uile dad mar a bu chòir a bhith. Às deidh seo, tha mi a 'tòiseachadh a' creidsinn gu bheil na duilgheadasan uile le exo-open cuideachd mar thoradh air dearbhadh cruth ceangail mar thoradh air na h-àireamhan san sgeama. Gus am beachd-bharail a dhearbhadh, bidh mi ag atharrachadh clàradh seòrsa mime den tagradh gu dìreach sgeama lionc agus voila - bidh a h-uile dad ag obair gun a bhith a’ dol thairis air a’ ghnìomh open_xfce. Ach cha chuidich seo sinn ann an dòigh sam bith, oir tha an duilleag lìn airson a dhol a-steach don cho-labhairt a’ cruthachadh ceangal le lync15.

Mar sin, tha a’ chiad phàirt den turas air a chrìochnachadh. Tha fios againn mar a chuireas sinn stad air gairm ceangail agus an uairsin feumaidh e dòigh air choireigin a ghiullachd agus a thoirt seachad taobh a-staigh Pidgin. Gus tuigse fhaighinn air mar a tha e ag obair air an taobh a-staigh nuair a thèid mi a-steach do dhàta tro cheangal sa chlàr “thoir còmhla ri co-labhairt”, chlàir mi stòr-tasgaidh Git den phròiseact Sipe agus rinn mi deiseil airson dàibheadh ​​​​a-steach don chòd a-rithist. Ach an uairsin, gu fortanach, bha mi air mo tharraing leis na sgriobtaichean sa chatalog tabhartas/dbus/:

  • sipe-join-co-labhairt-with-uri.pl
  • sipe-join-co-labhairt-with-eagraiche-and-id.pl
  • sipe-call-phone-number.pl
  • SipeHelper.pm

Tha e a ’tionndadh a-mach gu bheil am plugan Sipe ri fhaighinn airson eadar-obrachadh tro dbus (bus deasg) agus taobh a-staigh nan sgriobtaichean tha eisimpleirean ann de bhith a’ tighinn còmhla ri co-labhairt tro cheangal, an dàrna cuid tro ainm an eagraiche agus conf-id, no faodaidh tu fios a chuir air dòigh tro sip . Is e seo dìreach a bha sinn ag ionndrainn.

Ceum 2. Cur an gnìomh inneal-làimhseachaidh autojoin

Leis gu bheil eisimpleirean deiseil ann am Pearl, chuir mi romham dìreach a chleachdadh sipe-join-co-labhairt-with-uri.pl agus atharraich e beagan a fhreagras ort fhèin. Is urrainn dhomh sgrìobhadh ann am Pearl, agus mar sin cha do dh’ adhbhraich e duilgheadasan sònraichte sam bith.

Às deidh dhomh an sgriobt a dhearbhadh air leth, sgrìobh mi a ghairm a-steach don fhaidhle lync.desktop. Agus b’ e buaidh a bh’ ann! Nuair a thèid thu a-steach do dhuilleag ceangail na co-labhairt agus a leigeas le xdg-open a ruith, dh’ fhosgladh uinneag popup na co-labhairt bho Pidgin gu fèin-ghluasadach. Mar a rinn mi gàirdeachas.
Air mo mhisneachadh leis an t-soirbheachas, chuir mi romham an aon rud a dhèanamh airson mo phrìomh bhrobhsair, Mozilla Firefox. Nuair a logas tu a-steach tron ​​​​t-sionnach, bidh duilleag airson cead a’ fosgladh agus aig a’ bhonn tha putan Thig còmhla a’ cleachdadh neach-conaltraidh oifis. B’ i an tè a ghlac m’ aire. Nuair a phutas tu air sa bhrobhsair, thèid e chun t-seòladh:

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

ris a bheil e gu coibhneil ag innse dhomh nach eil fios aige ciamar a dh’ fhosglas e e agus, is dòcha, nach eil tagradh co-cheangailte rium airson a leithid de phròtacal. Uill, tha sinn air a bhith tro seo mu thràth.

Bidh mi gu sgiobalta a’ clàradh an tagradh sgriobt agam cuideachd airson an sgeama uri conf agus... chan eil dad a' tachairt. Bidh am brabhsair a 'cumail a' gearan nach eil aplacaid ann a làimhsicheas na ceanglaichean agam. Anns a ’chùis seo, bidh a bhith a’ gairm xdg-open bhon consol le paramadairean ag obair gu foirfe.

“Suidhich inneal-làimhseachaidh protocol gnàthaichte ann am firefox” - chaidh mi air-loidhne leis a’ cheist seo. Às deidh grunn chòmhraidhean a dhèanamh mu stackoverflow (agus càite am biodh sinn às aonais), tha e coltach gun deach am freagairt a lorg. Feumaidh tu paramadair sònraichte a chruthachadh a-staigh mu dheidhinn: cumadh (gu dearbh an àite foo le conf):

network.protocol-handler.expose.foo = false

Bidh sinn ga chruthachadh, a’ fosgladh a’ cheangail agus... gun a leithid de fhortan. Tha am brabhsair, mar nach robh dad air tachairt, ag ràdh nach eil e eòlach air an tagradh againn.

Tha mi a’ leughadh na sgrìobhainnean oifigeil mu bhith a’ clàradh protocol bho Mozilla, tha roghainn ann comainn a chlàradh anns an deasg gnome fhèin (a’ dol an àite foo le conf, gu dearbh):

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

Bidh mi a 'clàradh, fosgail am brabhsair ... agus a-rithist am feusag.

Seo loidhne bho na sgrìobhainnean a’ glacadh mo shùil:

An ath thuras a phutas tu air ceangal foo seòrsa protocol thèid faighneachd dhut dè an aplacaid a dh’ fhosglas tu e.

— Semyon Semenych
- Ach

Cha bhith sinn a’ briogadh air a’ cheangal, ach tha an duilleag-lìn dìreach ag atharrachadh window.location tro javascript. Bidh mi a’ sgrìobhadh faidhle html sìmplidh le ceangal ris a’ phròtacal conf, fosgail e sa bhrobhsair, cliog air a’ cheangal - Yos! Tha uinneag a’ fosgladh a’ faighneachd dè an tagradh a dh’ fheumas sinn gus ar ceangal fhosgladh, agus an sin tha an tagradh Lync againn air an liosta mu thràth - chlàraich sinn gu h-onarach e anns a h-uile dòigh a tha comasach. An sin san uinneig tha bogsa-dearbhaidh “cuimhnich air an roghainn agus fosgail ceanglaichean san tagradh againn an-còmhnaidh”, comharraich e, cliog air OK. Agus is e seo an dàrna buaidh - tha uinneag na co-labhairt a’ fosgladh. Aig an aon àm, bidh fosgladh cho-labhairtean ag obair chan ann a-mhàin nuair a phutas tu air ceangal, ach cuideachd nuair a ghluaiseas sinn bhon duilleag ceangail a dh’ fheumas sinn chun cho-labhairt.

An uairsin rinn mi sgrùdadh, cuir às do pharaimearan network.protocol-handler.expose.conf cha tug e buaidh ann an dòigh sam bith air obrachadh a’ phròtacal ann an Fox. Lean na ceanglaichean ag obair.

co-dhùnadh

Tha mi air an obair agam gu lèir a luchdachadh suas gu stòr GitHub; bidh ceanglaichean ris a h-uile goireas aig deireadh an artaigil.
Bidh ùidh agam fios air ais fhaighinn bhon fheadhainn a tha airson mo chuid obrach a chleachdadh. Bu chòir dhomh a thoirt fa-near sa bhad gun do rinn mi an leasachadh gu lèir a-mhàin airson an t-siostam Linux Mint agam, agus mar sin is dòcha nach obraich cuid de sgaoilidhean no deasgaichean eile san dreach sin. No an àite sin, tha mi eadhon cha mhòr cinnteach mu dheidhinn seo, oir cha do ghlèidh mi ach gnìomh 1 ann an xdg-open a tha a’ buntainn a-mhàin ri mo DE. Ma tha thu airson taic a chuir ri siostaman no deasg eile, sgrìobh thugam iarrtasan tarraing air Github.

Thug am pròiseact gu lèir 1 oidhche airson a chrìochnachadh.

Tùsan:

Source: www.habr.com

Cuir beachd ann