E komo maʻalahi i nā hālāwai kūkā Lync ma Linux

E Habr!

Noʻu nei, ua like kēia ʻōlelo me hello world, ʻoiai ua loaʻa iaʻu i kaʻu puke mua. Ua hoʻopaneʻe wau i kēia manawa kupanaha no ka manawa lōʻihi, ʻoiai ʻaʻohe mea e kākau ai, a ʻaʻole hoʻi au i makemake e omo i kahi mea i omo mua ʻia i nā manawa he nui. Ma keʻano laulā, no kaʻu paʻi mua, makemake wau i kahi mea kumu, pono i nā poʻe ʻē aʻe a loaʻa kekahi ʻano paʻakikī a me ka hoʻoponopono pilikia. A i kēia manawa hiki iaʻu ke kaʻana like i kēia. I kēia manawa, e kamaʻilio kākou e pili ana i nā mea a pau.

komo

Ua hoʻomaka ia i ka wā i hoʻoiho ai au i ka Linux Mint ma kaʻu kamepiula hana. Ua ʻike paha ka poʻe he nui ʻo Pidgin me ka plugin Sipe he mea kūpono loa ia no Microsoft Lync (i kapa ʻia ʻo Skype no ka ʻoihana) no nā ʻōnaehana Linux. Ma muli o nā kikoʻī o kaʻu hana, pono pinepine wau e komo i nā hālāwai SIP, a i koʻu wā he limahana Windows, ʻo ke komo ʻana i nā ʻaha kūkā he kula haʻahaʻa: loaʻa iā mākou kahi kono ma ka leka uila, kaomi ma ka loulou login, a mākaukau mākou e hele. .

Ke hoʻololi nei i ka ʻaoʻao ʻeleʻele o Linux, ua lilo nā mea āpau i mea paʻakikī: ʻoiaʻiʻo, hiki iā ʻoe ke komo i loko o nā hālāwai kūkā ma Pidgin, akā no ka hana ʻana i kēia pono ʻoe e koho i ke koho hui hui i ka papa kuhikuhi i nā waiwai o kāu moʻokāki SIP a i ka puka aniani e wehe ai, e hoʻokomo i kahi loulou i ka hālāwai kūkā a i ʻole e hoʻokomo i ka inoa o ka mea hoʻonohonoho a conf id. A ma hope o kekahi manawa ua hoʻomaka wau e noʻonoʻo: "hiki paha ke hoʻomaʻamaʻa i kēia?" ʻAe, e ʻōlelo paha ʻoe, no ke aha lā ʻoe e pono ai i kēia? Makemake wau e noho ma Windows a ʻaʻole e puhi i koʻu manaʻo.

KaʻAnuʻu 1: Noiʻi

"Inā loaʻa iā ʻoe kahi manaʻo i loko o kou poʻo, ʻaʻole hiki iā ʻoe ke kīkēkē me ka lāʻau," i ʻōlelo ai ʻo Nekrasov i kāna hana "Who Lives Well in Rus'."

No laila, i ka manawa i komo ai ka manaʻo i loko o koʻu poʻo, ma hope o kekahi manawa ua ala mai ka manaʻo mua no ka hoʻokō. Ua maʻalahi nā mea a pau - pono ʻoe e ʻae i ke komo ʻana i nā loulou meet.company.com/user/confid - e hoʻokomo i kahi kaʻina noi pūnaewele kūloko ma kāu kaʻa ma 127.0.0.1 a ma /etc/hosts e hoʻohui i kahi komo paʻa no ka ʻoihana ʻoihana āu e komo ai i ka ʻaha kūkā, e kuhikuhi ana iā localhost. Ma hope aʻe, pono e hoʻoponopono kēia kikowaena pūnaewele i ka loulou i hiki mai ai a hoʻololi iā ia i loko o Pidgin (e ʻōlelo koke wau i kēia manawa ʻaʻole wau i ʻike pehea e hāʻawi ai iā ia). ʻO ka hoʻonā, ʻoiaʻiʻo, ʻala e like me nā koʻokoʻo, akā he poʻe papahana mākou, ʻaʻole hoʻoweliweli nā koʻi iā mākou (shit).

A laila, ma ka manawa, ua wehe au i ka loulou kono ma Google Chrome (a maʻa mau wau e hoʻohana i Mozilla Firefox). A i koʻu kahaha, ʻokoʻa loa ka ʻaoʻao o ka pūnaewele - ʻaʻohe ʻano no ka hoʻokomo ʻana i ka ʻikepili mea hoʻohana a ma hope koke o ke komo ʻana i ka ʻaoʻao aia kahi noi e wehe i kahi mea ma o xdg-wehe. No ka leʻaleʻa wale, kaomi wau i ka "yes" a ʻike ʻia kahi memo hewa - ʻaʻole hiki ke wehe ʻia ka loulou lync15:confjoin?url=https://meet.company.com/user/confid. Hmm. He aha kēia ʻano xdg-open a he aha ka mea e pono ai e wehe ai ia mau loulou? Ua hōʻike ʻia kahi heluhelu post-mortem o ka palapala he mea lawelawe GUI e kōkua i ka holo ʻana i nā noi pili me nā protocols no ka uri scheme a i ʻole me nā ʻano faila kikoʻī. Hoʻonohonoho ʻia nā hui ma o ka palapala palapala ʻano mime. No laila ʻike mākou ke holo nei mākou i kahi ʻimi no kahi noi kūpono no kahi ʻōnaehana uri i kapa ʻia lync15 a ua hāʻawi ʻia ka loulou i xdg-open, a laila, ma ke kumumanaʻo, pono e hāʻawi iā ia i kekahi noi i kuleana no kēia ʻano loulou. ʻO ia, ʻoiaʻiʻo, ʻaʻole mākou i kā mākou ʻōnaehana. Inā ʻaʻole, he aha kā lākou e hana ai ma ke ao ākea? Pololei, na makou iho e kakau.

ʻO ka hoʻomaʻamaʻa hou ʻana i ka honua o Linux a ʻoi aku hoʻi i ke aʻo ʻana i ka hana ʻana o ka shell graphical (desktop environment, DE), ma ke ala, loaʻa iaʻu ka Xfce ma Linux Mint, ua hōʻike ʻia nā noi a me ke ʻano mime e pili pū me ia i kākau pololei ʻia i loko. nā faila pōkole me ka hoʻonui .desktop. ʻAe, no ke aha ʻaʻole, hana wau i kahi pōkole noi maʻalahi, e hoʻomaka wale i kahi palapala bash a hoʻopuka i ka hoʻopaʻapaʻa i hāʻawi ʻia i ka console, hāʻawi wau i ka faila pōkole ponoʻī:

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

Hoʻomaka wau i ka xdg-open mai ka console, e hele ana i ka loulou like mai ka polokalamu kele pūnaewele a ... bummer. Ua ʻōlelo hou ʻaʻole hiki iā ia ke hana i ka loulou.

E like me ka mea i ʻike ʻia, ʻaʻole wau i hoʻonui i ka papa kuhikuhi o nā mime-types pili me kaʻu noi. Hana ʻia kēia me kahi kauoha maʻalahi:

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

ka mea hoʻoponopono wale i ka faila ~/.config/mimeapps.list.

E ho'āʻo i ka helu 2 me ka xdg-open call - a hāʻule hou. ʻAʻohe mea, ʻaʻole makaʻu nā pilikia iā mākou, akā hoʻoulu wale i ko mākou makemake. A paʻa pū me ka mana āpau o ka bash (ʻo ia hoʻi ka tracing), luʻu mākou i ke poʻo mua i ka debugging. He mea nui ia e hoʻomaopopo ma aneʻi ʻo xdg-open he palapala shell wale nō.

bash -x xdg-open $url

ʻO ke kālailai ʻana i ka hoʻopuka ma hope o ka huli ʻana a ʻike maopopo ʻia e hoʻololi ʻia ka mana i wehe-waha. A he faila binary kēia a ʻoi aku ka paʻakikī o ka hoʻomaopopo ʻana i ke kumu o ka hoʻihoʻi ʻana i kahi code hoʻihoʻi kūleʻa i ka wā e hāʻawi ai i kahi loulou iā ia ma kahi paio.

Ke nānā nei au i loko o nā kikowaena o xdg-open, ʻike wau e nānā ana ia i nā ʻāpana like ʻole o ke kaiapuni a hāʻawi i ka mana hou i kekahi mau mea hana no ka wehe ʻana i nā loulou faila e pili ana i kahi DE, a i ʻole he hana fallback. 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
}

E hoʻokomo koke wau i kahi hack liʻiliʻi me ka nānā ʻana i ka hoʻopaʻapaʻa i hala a inā aia kā mākou substring kikoʻī ma laila lync15:, a laila hoʻololi koke mākou i ka mana i ka hana open_generic.

E ho'āʻo i ka helu 3 a manaʻo ʻoe ua hana? ʻAe, i kēia manawa, ʻoiaʻiʻo. Akā ua loli ka memo hewa, ua holomua kēia - i kēia manawa ua haʻi ʻo ia iaʻu ʻaʻole i loaʻa ka faila a ma ke ʻano o kahi faila ua kākau ʻo ia iaʻu i ka loulou like i hala ma ke ʻano he hoʻopaʻapaʻa.

I kēia manawa ua lilo ia i hana is_file_url_or_path, nāna e nānā i ka loulou waihona i hāʻawi ʻia i ka hoʻokomo: file:// a i ʻole ke ala i ka faila a i ʻole kekahi mea ʻē aʻe. A ʻaʻole i holo pololei ka māka ma muli o ka loaʻa ʻana o kā mākou prefix (url scheme) i nā helu, a ʻo ka ʻōlelo maʻamau e nānā wale i ka hoʻonohonoho ʻano: alpha: nā kiko a me nā kaha. Ma hope o ka kūkākūkā ʻana i ka maʻamau rfc3986 no mea hōʻike waiwai like ʻole Ua maopopo i kēia manawa ʻaʻole ʻae ʻo Microsoft i kekahi mea (ʻoiai ua loaʻa iaʻu kahi mana). ʻO ka papa huaʻōlelo wale nō : alpha: loaʻa nā huaʻōlelo o ka alphabet Latin wale nō. Hoʻololi koke au i ka helu helu maʻamau i alphanumeric. Pau, kupaianaha ʻoe, hoʻomaka nā mea a pau, hoʻomalu ma hope o ka hāʻawi ʻia ʻana o nā loiloi āpau i kā mākou palapala palapala, hōʻike ʻia kā mākou loulou ma ka console, ua like nā mea a pau. Ma hope o kēia, hoʻomaka wau e kānalua i nā pilikia āpau me ka exo-open ma muli o ka hōʻoia ʻana o ka format link ma muli o nā helu i ka papahana. No ka hoʻāʻo ʻana i ke kuhiakau, hoʻololi au i ka hoʻopaʻa inoa ʻano mime o ka noi i kahi hoʻolālā wale nō lync a voila - hana nā mea a pau me ka ʻole o ka hana open_xfce. Akā ʻaʻole kēia e kōkua iā mākou ma kekahi ʻano, no ka mea, ʻo ka ʻaoʻao pūnaewele no ke komo ʻana i ka ʻaha kūkā e hana i kahi loulou me lync15.

No laila, ua pau ka hapa mua o ka huakaʻi. Ua ʻike mākou pehea e hoʻopaʻa ai i kahi kelepona loulou a laila pono e hoʻoponopono ʻia a hele i loko o Pidgin. I mea e hoʻomaopopo ai i ka hana ʻana o loko i ka wā e hoʻokomo ai i ka ʻikepili ma o kahi loulou i ka papa kuhikuhi "hui i kahi hālāwai kūkā", ua cloned au i ka waihona Git o ka papahana Sipe a mākaukau e luʻu hou i ke code. Akā naʻe, ʻoi aku ka maikaʻi, ua hoihoi au i nā palapala i loko o ka waihona hāʻawi/dbus/:

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

Ua ʻike ʻia aia ka plugin Sipe no ka launa pū ʻana ma o dbus (desktop bus) a i loko o nā palapala he mau hiʻohiʻona o ke komo ʻana i kahi hālāwai kūkā ma o kahi loulou, ma o ka inoa o ka mea hoʻonohonoho a me conf-id, a i ʻole hiki iā ʻoe ke hoʻomaka i kahi kelepona ma o sip. . ʻO kēia ka mea a mākou i nalowale ai.

KaʻAnuʻu 2. Ka hoʻokō 'ana i ka autojoin handler

No ka mea aia nā hiʻohiʻona mākaukau ma Pearl, ua hoʻoholo wau e hoʻohana wale sipe-join-conference-with-uri.pl a hoʻololi iki e kūpono iā ʻoe iho. Hiki iaʻu ke kākau ma Pearl, no laila ʻaʻole ia he pilikia.

Ma hope o ka hoʻokaʻawale ʻana i ka palapala, ua kākau wau i kāna kelepona i loko o ka faila lync.desktop. A he lanakila! Ke komo ʻana i ka ʻaoʻao hui hui a ʻae i ka xdg-open e holo, e wehe koke ʻia ka pukaaniani popup mai Pidgin. Ua hauoli au.
Paipai ʻia e ka holomua, ua hoʻoholo wau e hana like no kaʻu polokalamu kele nui, Mozilla Firefox. Ke komo ʻoe ma o ka alopeke, wehe ʻia kahi ʻaoʻao no ka ʻae ʻana a ma lalo loa aia kahi pihi hui pū me ka hoʻohana ʻana i ke keʻena kamaʻilio. ʻO ia ka mea i hopu i koʻu nānā. Ke kaomi ʻoe iā ia ma ka polokalamu kele pūnaewele, hele ia i ka helu wahi:

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

i ʻōlelo ʻoluʻolu ʻo ia iaʻu ʻaʻole ʻo ia i ʻike pehea e wehe ai a, malia paha, ʻaʻohe oʻu noi pili no ia protocol. ʻAe, ua hala mua mākou i kēia.

Hoʻopaʻa inoa koke au i kaʻu palapala palapala no ka hoʻolālā uri conf a... ʻaʻohe mea i hiki. Ke hoʻopiʻi mau nei ka polokalamu kele pūnaewele ʻaʻohe palapala noi e mālama i kaʻu mau loulou. I kēia hihia, ke kāhea ʻana iā xdg-open mai ka console me nā ʻāpana e hana maikaʻi.

"E hoʻonohonoho i ka mea hoʻoponopono protocol maʻamau i firefox" - Ua hele au ma ka pūnaewele me kēia nīnau. Ma hope o ka hele ʻana i kekahi mau kūkākūkā e pili ana i ka stackoverflow (a ma hea mākou e ʻole ai), me he mea lā ua loaʻa ka pane. Pono ʻoe e hana i kahi ʻāpana kūikawā ma e pili ana i: config (ʻoiaʻiʻo e hoʻololi i ka foo me ka conf):

network.protocol-handler.expose.foo = false

Hoʻokumu mākou, wehe i ka loulou a ... ʻaʻohe laki. ʻO ka polokalamu kele pūnaewele, me he mea lā ʻaʻohe mea i hana, ʻōlelo ʻo ia ʻaʻole ʻike i kā mākou noi.

Ke heluhelu nei au i ka palapala mana no ka hoʻopaʻa inoa ʻana i kahi protocol mai Mozilla, aia kahi koho e hoʻopaʻa inoa i nā hui ma ka gnome desktop ponoʻī (hoʻololi i ka foo me ka conf, ʻoiaʻiʻo):

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

Hoʻopaʻa inoa wau, wehe i ka polokalamu kele pūnaewele ... a hou ka ʻumiʻumi.

Eia kahi laina mai ka palapala i hopu i koʻu maka:

I ka manawa aʻe e kaomi ai ʻoe i kahi loulou o ka protocol-type foo e nīnau ʻia ʻoe i ka palapala noi e wehe ai.

— Semyon Semenych
- ʻAha

ʻAʻole mākou e kaomi i ka loulou, akā hoʻololi wale ka ʻaoʻao pūnaewele window.location ma o javascript. Kākau wau i kahi faila html maʻalahi me kahi loulou i ka protocol conf, wehe iā ia i ka polokalamu kele pūnaewele, kaomi i ka loulou - Yos! Wehe ʻia kahi puka aniani e nīnau ana i kahi noi e pono ai mākou e wehe i kā mākou loulou, a ma laila mākou i kā mākou noi Lync i ka papa inoa - ua hoʻopaʻa inoa mākou iā ia ma nā ala āpau. Aia ma ka puka aniani kahi pahu "hoʻomanaʻo i ke koho a wehe mau i nā loulou i kā mākou noi", e kaha iā ia, kaomi ʻoi. A ʻo kēia ka lua o ka lanakila - wehe ʻia ka puka aniani. Ma ka manawa like, wehe ʻia nā hālāwai kūkā ʻaʻole wale ke kaomi ʻana i kahi loulou, akā i ka wā e neʻe ai mai ka ʻaoʻao hui e pono ai mākou i ka ʻaha kūkā.

A laila ua nānā au, e holoi ana i nā ʻāpana network.protocol-handler.expose.conf ʻAʻole i pili i ka hana o ka protocol ma Fox. Ua hoʻomau ka hana o nā loulou.

hopena

Ua hoʻouka au i kaʻu hana a pau i ka waihona GitHub; aia nā loulou i nā kumuwaiwai āpau ma ka hopena o ka ʻatikala.
E hoihoi au i ka loaʻa ʻana o nā manaʻo mai ka poʻe makemake e hoʻohana i kaʻu hana. Pono wau e hoʻomaopopo koke ua hana wau i nā hoʻomohala āpau no kaʻu ʻōnaehana Linux Mint, no laila ʻaʻole hana kekahi mau māhele ʻē aʻe a i ʻole nā ​​​​papakaukau i kēlā mana. A i ʻole, ʻaneʻane maopopo iaʻu i kēia, no ka mea, ua hoʻopaʻa wau i ka hana 1 wale nō ma xdg-open e pili wale ana i kaʻu DE. Inā makemake ʻoe e hoʻohui i ke kākoʻo no nā ʻōnaehana ʻē aʻe a i ʻole desktop, e kākau iaʻu i nā noi huki ma Github.

ʻO ka papahana holoʻokoʻa he 1 ahiahi a pau.

Nā Manaʻo:

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka