Kupinda otomatiki kuLync conferences paLinux

Hei Habr!

Kwandiri, mutsara uyu wakafanana nenyika mhoro, kubva pandakazosvika pakudhindwa kwangu kwekutanga. Ndakabvisa iyi nguva inoshamisa kwenguva yakareba, sezvo pakanga pasina chekunyora pamusoro, uye iniwo ndakanga ndisingadi kuyamwa pane chimwe chinhu chakanga chatove chakayamwa pane dzimwe nguva. Kazhinji, pakushambadzira kwangu kwekutanga ndaida chimwe chinhu chepakutanga, chinobatsira kune vamwe uye chine imwe mhando yedambudziko uye kugadzirisa matambudziko. Uye zvino ndinogona kugovera izvi. Zvino ngatitaure pamusoro pezvinhu zvose zvakarongeka.

kupinda

Izvo zvese zvakatanga apo imwe nguva yapfuura ndakarodha Linux Mint pakombuta yangu yebasa. Vanhu vazhinji vangangoziva kuti Pidgin ine Sipe plugin inonyatso kutsiva Microsoft Lync (yava kunzi Skype yebhizinesi) yeLinux masisitimu. Nekuda kwezvakajeka zvebasa rangu, ini kazhinji ndinofanirwa kutora chikamu mumisangano yeSIP, uye pandakanga ndiri mushandi weWindows, kupinda mumisangano yaive yekutanga: tinogashira kukokwa netsamba, tinya pane yekupinda link, uye tagadzirira kuenda. .

Kana uchichinjira kudivi rakasviba reLinux, zvese zvakawedzera kuomarara: hongu, unogona zvakare kupinda mumisangano muPidgin, asi kuti uite izvi unofanirwa kusarudza iyo yekujoinha musangano sarudzo mune menyu mune zvivakwa zveSIP account yako uye. muhwindo rinovhurwa, isa chinongedzo kumusangano kana isa zita remurongi uye conf id. Uye mushure menguva yakati ndakatanga kufunga: "zvinoita here kurerutsa izvi?" Ehe, ungati, sei gehena uchichida izvi? Ndoda kugara paWindows uye ndisafuridze pfungwa dzangu.

Danho 1: Tsvakurudza

"Kana ukanzwa kuda mumusoro mako, haugone kuirova nedanda," Nekrasov akadaro mubhuku rake "Ndiani Anogara Zvakanaka muRussia".

Saka, kana pfungwa yakapinda mumusoro mangu, mushure menguva yakati zano rekutanga rekuita rakamuka. Zvese zvaiita sezviri nyore - iwe unofanirwa kubata mukana kune zvinongedzo meet.company.com/user/confid - isa chirongwa chewebhu chemunharaunda pamotokari yako pa127.0.0.1 uye mu /etc/hosts wedzera static yekupinda yekambani yekambani iyo yaunopinda nayo musangano, uchinongedza kune localhost. Tevere, iyi sevha yewebhu inofanirwa kugadzirisa chinongedzo chakauya kwairi uye neimwe nzira kuendesa mukati mePidgin (ini ndichataura ipapo kuti panguva ino ini ndakanga ndisati ndaziva kuti ndoipa sei zvachose). Mhinduro, hongu, inonhuwa semadondoro, asi isu tiri mapurogiramu, madondoro haatityisi (shit).

Zvino, nemukana, ini neimwe nzira ndakavhura chinongedzo chekukoka muGoogle Chrome (uye kazhinji ini ndinogara ndichishandisa Mozilla Firefox). Uye zvakandishamisa, peji rewebhu raitaridzika rakasiyana zvachose - pakanga pasina fomu yekupinda data remushandisi uye nekukurumidza mushure mekupinda peji pakanga paine chikumbiro chekuvhura chimwe chinhu kuburikidza. xdg-vhura. Kungonakidzwa, ndinodzvanya "hongu" uye meseji yekukanganisa inobuda - chinongedzo lync15:confjoin?url=https://meet.company.com/user/confid haigone kuvhurwa. Hmm. Ndeupi rudzi rwe xdg-yakavhurika iyi uye inodei kuti ma links avhure? Kuverengerwa kwemashure kwekufa kwezvinyorwa kwakaratidza kuti i GUI inobata iyo inobatsira kumhanyisa maapplication angave nemaprotocol euri scheme kana nemhando dzefaira. Masangano anogadziriswa kuburikidza ne mime-type mepu. Saka isu tinoona kuti tirikumhanyisa kutsvaga kwakafanana application yeuri scheme yakanzi lync15 uye chinongedzo chinopfuudzwa kune xdg-yakavhurika, iyo zvino, muchirevo, inofanira kuipfuudza kune imwe application ine basa remhando iyi yekubatanidza. Izvo, zvechokwadi, isu hatina muhurongwa hwedu. Kana zvisiri, saka vanoitei munyika yakavhurika sosi? Ndizvozvo, tichazvinyora isu pachedu.

Kuwedzera kunyudzwa munyika yeLinux uye kunyanya mukudzidza mashandiro anoita iyo graphical shell (desktop environment, DE) inoshanda, nenzira, ndine Xfce muLinux Mint, yakaratidza kuti maapplication uye mime-mhando yakabatana nayo inowanzo nyorwa zvakananga mukati. shortcut mafaira ane extension .desktop. Zvakanaka, nei zvisiri, ini ndinogadzira nzira yekudimbudzira yakapfava, iyo inofanirwa kungovhura bash script uye kuburitsa iyo nharo yakapfuudzwa kwairi kune iyo console, ini ndinopa chete nzira pfupi faira pachayo:

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

Ini ndinovhura xdg-yakavhurika kubva kune koni, ndichipfuura imwechete link inouya kubva kubrowser uye ... bummer. Zvakare inotaura kuti haigone kugadzirisa chinongedzo.

Sezvazvinoitika, ini handina kugadzirisa dhairekitori yeakabatana mime-mhando nechishandiso changu. Izvi zvinoitwa nemurairo uri nyore:

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

iyo inongogadzirisa faira ~/.config/mimeapps.list.

Kuedza nhamba 2 ne xdg-yakavhurika kufona - uye zvakare kutadza. Hapana, matambudziko haatityisi, asi anongowedzera kufarira kwedu. Uye takashongedzerwa nesimba rose rebash (kureva kutsvaga), tinonyura nemusoro mukugadzirisa. Izvo zvakakosha kuti uzive pano kuti xdg-yakavhurika ingori shell script.

bash -x xdg-open $url

Kuongorora zvakabuda mushure mekutsvaga zvinova pachena zvishoma kuti kutonga kunobva kwaendeswa kune exo-open. Uye iyi yatova bhinari faira uye zvakanyanya kuoma kunzwisisa kuti sei ichidzosera isina kubudirira kodhi yekudzoka kana ichipfuura chinongedzo kwairi mukupokana.

Ndakatarisa kuburikidza nemukati me xdg-yakavhurika, ndakaona kuti inoongorora akasiyana siyana ezvemamiriro ekunze uye inopfuudza kudzora zvimwe kune mamwe maturusi ekuvhura faira malink akananga kune imwe DE, kana ine yekudzokera shure basa. open_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
}

Ini ndichakurumidza kunyudza pano diki hack nekuongororwa kwegakava rakapfuura uye kana yedu chaiyo substring iripo lync15:, ipapo tinobva taendesa kutonga kune basa open_generic.

Kuedza nhamba 3 uye unofunga kuti yakashanda here? Ehe, zvino, hongu. Asi iyo yekukanganisa meseji yakatochinja, iyi yatove kufambira mberi - zvino akange achindiudza kuti faira haina kuwanikwa uye muchimiro chefaira akandinyorera iyo link yakapfuura sekupokana.

Apa zvakabva zvaita basa is_file_url_or_path, iyo inoongorora iyo faira link yakapfuudzwa kune yekuisa: file:// kana nzira yefaira kana chimwe chinhu. Uye cheki haina kushanda nemazvo nekuda kwekuti yedu prefix (url scheme) ine manhamba, uye mataurirwo enguva dzose anongotarisa hunhu hweseti hunosanganisira :alpha: dots uye dashi. Mushure mekubvunza iyo rfc3986 standard ye yunifomu resource identifier Zvakava pachena kuti panguva ino Microsoft haisi kutyora chero chinhu (kunyangwe ini ndaive neshanduro yakadaro). Ingori kirasi yemavara :alpha: ine chete mavara echiLatin alphabet. Ndinokurumidza kuchinja cheki yenguva dzose kune alphanumeric. Waitwa, unoshamisa, zvese zvinotanga, kutonga mushure mekunge cheki dzese dzapihwa kune yedu script application, yedu link inoratidzwa pane console, zvese zviri sezvazvinofanira kunge zviri. Mushure meizvi, ndinotanga kufungidzira kuti matambudziko ese ane exo-akavhurika zvakare nekuda kwekusimbiswa kweiyo link fomati nekuda kwenhamba dziri muchirongwa. Kuti ndiedze iyo hypothesis, ini ndinoshandura iyo mime-mhando kunyoreswa kwechikumbiro kuita chirongwa chete lync uye voila - zvese zvinoshanda pasina kupfuudza iyo open_xfce basa. Asi izvi hazvizotibatsiri chero nzira, nekuti peji rewebhu rekupinda musangano rinogadzira chinongedzo ne lync15.

Saka, chikamu chekutanga cherwendo chapera. Isu tinoziva kubata nhare yekubatanidza uyezve inoda kugadziridzwa uye kupfuudzwa mukati mePidgin. Kuti unzwisise kuti inoshanda sei mukati kana uchipinda data kuburikidza nekubatanidza mune "join a musangano" menyu, ndakagadzira iyo Git repository yeSipe purojekiti uye ndakagadzirira kunyura mukodhi zvakare. Asi zvino, nerombo rakanaka, ndakakwezvwa nemagwaro ari mukatalogi contrib/dbus/:

  • sipe-join-conference-with-uri.pl
  • sipe-join-conference-with-organizer-and-id.pl
  • sipe-call-phone-number.pl
  • SipeHelper.pm

Zvinoitika kuti iyo Sipe plugin inowanikwa yekudyidzana kuburikidza ne dbus (desktop bhazi) uye mukati mezvinyorwa kune mienzaniso yekujoinha musangano kuburikidza nelink, kungave kuburikidza nezita remurongi uye conf-id, kana iwe unogona kutanga kufona kuburikidza sip. . Izvi ndizvo chaizvo zvatakanga tichishaya.

Danho 2. Kushandisa autojoin handler

Sezvo kune mienzaniso yakagadzirira-yakagadzirwa muPearl, ndakasarudza kungoshandisa sipe-join-conference-with-uri.pl uye gadzirisa zvishoma kuti zvienderane newe. Ndinogona kunyora muPearl, saka hazvina kukonzera chero matambudziko.

Mushure mekuyedza script zvakasiyana, ndakanyora kufona kwayo mufaira lync.desktop. Uye kwaiva kukunda! Paunopinda musangano wekujoinha peji uye uchibvumira xdg-kuvhurika kuti imhanye, iyo musangano popup hwindo kubva kuPidgin raizovhurika otomatiki. Ndakafara sei.
Ndichikurudzirwa nekubudirira, ndakafunga kuita zvimwe chete kune browser yangu huru, Mozilla Firefox. Paunopinda negava, peji remvumo rinovhurwa uye pazasi chaipo pane bhatani batanidza uchishandisa hofisi yekutaura. Ndiye akatozondibata. Paunodzvanya pairi mubrowser, inoenda kukero:

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

kwaanondiudza nemutsa kuti haazive nzira yekuivhura uye, pamwe, ini handina application yakabatana yeprotocol yakadaro. Zvakanaka, isu takatopfuura neizvi.

Ini ndinokurumidza kunyoresa script application yangu zvakare yeuri scheme conf uye ... hapana chinoitika. Iyo browser inoramba ichinyunyuta kuti hapana application inobata malink angu. Muchiitiko ichi, kudana xdg-kuvhura kubva kune koni ine paramita inoshanda zvakakwana.

"Seta tsika yeprotocol mubatiri mufirefox" - Ndakaenda online nemubvunzo uyu. Mushure mekuita hurukuro dzakati wandei pa stackoverflow (uye tingavepi tisina iyo), zvinoita sekunge mhinduro yakawanikwa. Iwe unofanirwa kugadzira yakakosha parameter mukati pamusoro: config (zvechokwadi kutsiva foo ne conf):

network.protocol-handler.expose.foo = false

Isu tinoigadzira, vhura iyo link uye ... hapana rombo rakanaka. Iyo browser, sekunge hapana chakaitika, inotaura kuti haizive application yedu.

Ndiri kuverenga zvinyorwa zvepamutemo pakunyoresa protocol kubva kuMozilla, pane sarudzo yekunyoresa masangano mugnome desktop pachayo (kutsiva foo ne conf, hongu):

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

Ini ndinonyoresa, vhura browser ... uye zvakare ndebvu.

Heino mutsara kubva mugwaro unobata ziso rangu:

Nguva inotevera paunodzvanya chinongedzo cheprotocol-type foo iwe uchabvunzwa kuti ndeipi application yekuivhura nayo.

β€” Semyon Semenych
- Ahh

Isu hatidzvanye pane chinongedzo, asi peji rewebhu rinongochinja windows.location kuburikidza nejavascript. Ini ndinonyora iri nyore html faira ine chinongedzo kune conf protocol, vhura mubrowser, tinya pane chinongedzo - Yos! Hwindo rinovhurika richibvunza kuti ndeipi application yatinoda kuvhura chinongedzo chedu, uye ipapo isu tatova neLync application yedu mune rondedzero - isu takainyoresa nekuvimbika munzira dzese dzinogoneka. Ikoko pahwindo pane bhokisi rekutarisa "rangarira sarudzo uye gara uchivhura malink mukushandisa kwedu", maka, tinya ok. Uye uku ndiko kukunda kwechipiri - hwindo remusangano rinovhurwa. Panguva imwecheteyo, kuvhura makonferensi kunoshanda kwete chete kana iwe uchidzvanya pane chinongedzo, asiwo kana uchifamba kubva kujoinha peji yatinoda kumusangano.

Ndakabva ndatarisa, ndichibvisa ma parameter network.protocol-handler.expose.conf hazvina kukanganisa kushanda kweprotocol muFox. Malink akaramba achishanda.

mhedziso

Ndakaisa basa rangu rese kuGitHub repository; zvinongedzo kune zvese zviwanikwa zvichave pakupera kwechinyorwa.
Ndichafarira kugamuchira mhinduro kubva kune avo vanoda kushandisa basa rangu. Ini ndinofanira kukurumidza kuona kuti ndakaita budiriro yese chete kune yangu Linux Mint system, saka kumwe kugovera kana matafura anogona kusashanda mune iyo vhezheni. Kana kuti, ini ndinotove nechokwadi cheizvi, nekuti ini ndakabata chete 1 basa mu xdg-yakavhurika inoenderana neDE yangu chete. Kana iwe uchida kuwedzera rutsigiro rwemamwe masisitimu kana desktops, ndinyorere kudhonza zvikumbiro paGithub.

Project yese yakatora 1 manheru kuti ipere.

Mareferensi:

Source: www.habr.com

Voeg