Tsis siv neeg nkag mus rau Lync cov rooj sib tham ntawm Linux

Hlo Habr!

Rau kuv, cov kab lus no zoo ib yam li nyob zoo ntiaj teb, txij li thaum kawg kuv tau txais kuv thawj qhov kev tshaj tawm. Kuv tso lub sijhawm zoo no mus ntev, vim tsis muaj ib yam dab tsi los sau txog, thiab kuv kuj tsis xav nqus ib yam dab tsi uas twb tau nqus rau ntau zaus. Feem ntau, rau kuv thawj qhov kev tshaj tawm kuv xav tau ib yam dab tsi qub, muaj txiaj ntsig zoo rau lwm tus thiab muaj qee yam kev sib tw thiab kev daws teeb meem. Thiab tam sim no kuv tuaj yeem qhia qhov no. Tam sim no cia peb tham txog txhua yam hauv kev txiav txim.

nkag

Nws tag nrho pib thaum qee lub sijhawm dhau los kuv rub tawm Linux Mint ntawm kuv lub computer ua haujlwm. Ntau tus neeg yuav paub tias Pidgin nrog Sipe plugin yog qhov tsim nyog hloov pauv rau Microsoft Lync (tam sim no hu ua Skype rau kev lag luam) rau Linux systems. Vim yog qhov tshwj xeeb ntawm kuv txoj haujlwm, kuv feem ntau yuav tsum tau koom nrog hauv SIP cov rooj sib tham, thiab thaum kuv yog ib tus neeg ua haujlwm Windows, nkag mus hauv cov rooj sib tham yog theem pib: peb tau txais kev caw los ntawm kev xa ntawv, nyem rau ntawm tus ID nkag mus, thiab peb npaj mus. .

Thaum hloov mus rau sab tsaus nti ntawm Linux, txhua yam tau dhau los ua qhov nyuaj me ntsis: tau kawg, koj tuaj yeem nkag mus rau hauv cov rooj sib tham hauv Pidgin, tab sis ua li no koj yuav tsum xaiv qhov kev xaiv koom nrog hauv cov ntawv qhia zaub mov hauv cov khoom ntawm koj tus account SIP thiab. nyob rau hauv lub qhov rais uas qhib, ntxig ib qhov txuas mus rau lub rooj sib tham los yog sau lub npe ntawm tus organizer thiab conf id. Thiab tom qab qee lub sijhawm kuv pib xav tias: "Nws puas tuaj yeem ua tau yooj yim rau qhov no?" Yog lawm, tej zaum koj yuav hais, vim li cas lub ntuj raug txim koj xav tau qhov no? Kuv xav zaum ntawm Windows thiab tsis tshuab kuv lub siab.

Kauj Ruam 1: Tshawb nrhiav

"Yog tias koj tau txais qee qhov kev xav hauv koj lub taub hau, koj tsis tuaj yeem tsoo nws nrog ceg txheem ntseeg," Nekrasov tau hais hauv nws txoj haujlwm "Leej twg Nyob Zoo hauv Rus".

Yog li, ib zaug qhov kev xav nkag rau hauv kuv lub taub hau, tom qab qee lub sij hawm thawj lub tswv yim rau kev siv tau tshwm sim. Txhua yam zoo li yooj yim - koj yuav tsum cuam tshuam kev nkag mus rau kev sib txuas meet.company.com/user/confid - nruab cov txheej txheem kev thov hauv lub vev xaib ntawm koj lub tsheb ntawm 127.0.0.1 thiab hauv /etc/hosts ntxiv qhov kev nkag zoo li qub rau lub tuam txhab sau npe uas koj nkag mus rau lub rooj sib tham, taw rau localhost. Tom ntej no, lub vev xaib no yuav tsum ua cov ntawv txuas uas tuaj rau nws thiab hloov pauv mus rau hauv Pidgin (Kuv mam li hais tam sim ntawd tias nyob rau theem no kuv tseem tsis tau muaj lub tswv yim yuav muab rau nws li cas). Kev daws, tau kawg, tsw zoo li tus ntoo khaub lig, tab sis peb yog cov programmers, crutches tsis ntshai peb (shit).

Tom qab ntawd, los ntawm lub sijhawm, kuv qhib qhov txuas caw hauv Google Chrome (thiab feem ntau kuv ib txwm siv Mozilla Firefox). Thiab ua rau kuv xav tsis thoob, nplooj ntawv web saib txawv kiag li - tsis muaj daim ntawv nkag mus rau cov neeg siv cov ntaub ntawv thiab tam sim ntawd tom qab nkag mus rau nplooj ntawv muaj kev thov qhib ib yam dab tsi los ntawm xdg-qhib. Tsuas yog kev lom zem, kuv nyem "yog" thiab cov lus yuam kev tshwm - qhov txuas lync15: confjoin?url=https://meet.company.com/user/confid qhib tsis tau. Hmo. Dab tsi ntawm xdg-qhib yog qhov no thiab nws xav tau dab tsi txhawm rau txhawm rau qhib qhov txuas? Kev nyeem ntawv tom qab ntawm cov ntaub ntawv tau tshaj tawm tias nws yog tus tuav GUI uas pab khiav cov ntawv thov cuam tshuam nrog cov txheej txheem rau uri scheme lossis nrog cov ntaub ntawv tshwj xeeb. Cov koom haum raug teeb tsa los ntawm mime-type mapping. Yog li peb pom tias peb tab tom khiav kev tshawb nrhiav rau daim ntawv thov sib tw rau uri scheme npe lync 15 thiab qhov txuas tau dhau mus rau xdg-qhib, uas tom qab ntawd, hauv txoj kev xav, yuav tsum dhau mus rau qee daim ntawv thov uas yog lub luag haujlwm rau hom kev txuas no. Qhov twg, tau kawg, peb tsis muaj nyob hauv peb lub cev. Yog tsis yog, lawv yuav ua li cas hauv lub ntiaj teb qhib? Yog lawm, peb mam li sau nws tus kheej.

Ntxiv rau hauv lub ntiaj teb no ntawm Linux thiab tshwj xeeb tshaj yog nyob rau hauv kev kawm yuav ua li cas lub graphical plhaub (desktop ib puag ncig, DE) ua hauj lwm, los ntawm txoj kev, kuv muaj Xfce nyob rau hauv Linux Mint, qhia tau hais tias cov ntawv thov thiab cov mime-hom txuam nrog nws feem ntau yog sau ncaj qha rau hauv. shortcut cov ntaub ntawv nrog lub extension .desktop. Zoo, yog vim li cas tsis, kuv tsim ib qho yooj yim daim ntawv thov shortcut, uas yuav tsum tsuas yog tso tawm ib tug bash tsab ntawv thiab tso tawm qhov kev sib cav mus rau lub console, kuv tsuas yog muab cov shortcut ntaub ntawv nws tus kheej:

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

Kuv tso xdg-qhib los ntawm lub console, hla tib qhov txuas uas los ntawm qhov browser thiab ... bummer. Ib zaug ntxiv nws hais tias nws tsis tuaj yeem ua qhov txuas.

Raws li nws hloov tawm, kuv tsis tau hloov kho cov npe ntawm cov mime-hom nrog kuv daim ntawv thov. Qhov no yog ua tiav nrog cov lus txib yooj yim:

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

uas yooj yim kho cov ntaub ntawv ~/.config/mimeapps.list.

Sim tus lej 2 nrog xdg-qhib hu - thiab ua tsis tiav. Tsis muaj dab tsi, kev nyuaj siab tsis ua rau peb ntshai, tab sis tsuas yog ua rau peb nyiam. Thiab armed nrog tag nrho cov hwj chim ntawm bash (piv txwv li tracing), peb dhia taub hau ua ntej rau kev debugging. Nws tseem ceeb heev uas yuav tsum nco ntsoov ntawm no tias xdg-qhib tsuas yog daim ntawv plhaub xwb.

bash -x xdg-open $url

Ntsuam xyuas cov zis tom qab tracing nws dhau los ua me ntsis meej tias kev tswj yog ces pauv mus rau exo qhib. Thiab qhov no twb yog ib cov ntaub ntawv binary thiab nws nyuaj rau nkag siab tias vim li cas nws rov qab ua tsis tiav cov lej xa rov qab thaum dhau qhov txuas rau nws hauv kev sib cav.

Tau saib los ntawm cov sab hauv ntawm xdg-qhib, Kuv pom tias nws txheeb xyuas ntau yam kev ntsuas ib puag ncig thiab hla kev tswj xyuas ntxiv mus rau qee cov cuab yeej qhib cov ntaub ntawv txuas tshwj xeeb rau ib qho tshwj xeeb DE, lossis nws muaj qhov cuam tshuam rov qab. qhib_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
}

Kuv yuav sai sai embed ntawm no me me hack nrog kev tsom xam ntawm qhov kev sib cav dhau los thiab yog tias peb cov substring tshwj xeeb nyob ntawd lus 15:, ces peb tam sim hloov kev tswj mus rau qhov muaj nuj nqi qhib_generic.

Sim tus lej 3 thiab koj puas xav tias nws ua haujlwm? Yog, tam sim no, tau kawg. Tab sis cov lus yuam kev twb tau hloov lawm, qhov no twb tau ua tiav - tam sim no nws tau qhia kuv tias cov ntaub ntawv tsis pom thiab hauv daim ntawv ntawm cov ntaub ntawv nws tau sau kuv tib qhov txuas dhau los ua kev sib cav.

Lub sijhawm no nws tau los ua haujlwm yog_file_url_or_path, uas txheeb xyuas cov ntaub ntawv txuas mus rau cov tswv yim: file:// lossis txoj hauv kev rau cov ntaub ntawv lossis lwm yam. Thiab daim tshev tsis ua haujlwm raug vim qhov tseeb tias peb cov lus ua ntej (url scheme) muaj cov lej, thiab cov lus qhia tsis tu ncua tsuas yog xyuas cov cim teeb uas muaj xws li :alpha: dots thiab dashes. Tom qab sab laj tus qauv rfc3986 rau uniform peev xwm identifier Nws tau pom tseeb tias lub sijhawm no Microsoft tsis ua txhaum dab tsi (txawm tias kuv muaj ib qho version). Tsuas yog cov cim hauv chav kawm :alpha: tsuas muaj cov tsiaj ntawv ntawm cov tsiaj ntawv Latin xwb. Kuv hloov daim tshev tsis tu ncua mus rau alphanumeric. Ua tiav, koj yog amazing, txhua yam thaum kawg pib, tswj tom qab tag nrho cov tshev tau muab rau peb tsab ntawv thov, peb qhov txuas tau tso tawm rau ntawm lub console, txhua yam yog raws li nws yuav tsum tau ua. Tom qab no, kuv pib xav tias tag nrho cov teeb meem nrog exo-qhib kuj yog vim qhov tseeb ntawm cov ntawv txuas vim yog cov lej hauv cov tswv yim. Txhawm rau ntsuas qhov kev xav, kuv hloov pauv mime-hom sau npe ntawm daim ntawv thov mus rau ib lub tswv yim xwb lync ua thiab voila - txhua yam ua haujlwm yam tsis muaj overriding lub open_xfce muaj nuj nqi. Tab sis qhov no yuav tsis pab peb nyob rau hauv ib txoj kev, vim hais tias lub vev xaib rau nkag mus rau lub rooj sib tham tsim ib qhov txuas nrog lync15.

Yog li ntawd, thawj feem ntawm kev taug kev tau ua tiav. Peb paub yuav ua li cas cuam tshuam qhov txuas hu thiab tom qab ntawd nws yuav tsum tau ua qee yam thiab dhau mus hauv Pidgin. Txhawm rau nkag siab tias nws ua haujlwm sab hauv li cas thaum nkag mus rau cov ntaub ntawv los ntawm qhov txuas hauv "sib koom nrog lub rooj sib tham" ntawv qhia zaub mov, kuv cloned Git repository ntawm Sipe project thiab npaj txhij mus dhia rau hauv cov cai dua. Tab sis tom qab ntawd, hmoov zoo, kuv tau nyiam los ntawm cov ntawv sau hauv phau ntawv teev npe contrib/dbus/:

  • sipe-join-conference-with-uri.pl
  • sipe-join-conference-with-organizer-and-id.pl
  • sipe-hu-phone-number.pl
  • SibHelper.pm

Nws hloov tawm tias Sipe plugin muaj rau kev sib cuam tshuam ntawm dbus (desktop bus) thiab hauv cov ntawv sau muaj cov piv txwv ntawm kev koom nrog lub rooj sib tham los ntawm kev sib txuas, los ntawm lub koom haum lub npe thiab conf-id, lossis koj tuaj yeem pib hu ntawm sip . Qhov no yog qhov peb tau ploj lawm.

Kauj Ruam 2. Ua raws li tus neeg tuav autojoin

Txij li thaum muaj cov qauv npaj ua hauv Pearl, kuv txiav txim siab siv xwb sipe-join-conference-with-uri.pl thiab hloov nws me ntsis kom haum koj tus kheej. Kuv tuaj yeem sau hauv Pearl, yog li nws tsis ua rau muaj teeb meem tshwj xeeb.

Tom qab kuaj cov ntawv cais, kuv sau nws hu rau hauv cov ntaub ntawv lync.desktop. Thiab nws yog ib tug yeej! Thaum nkag mus rau lub rooj sib tham koom nrog nplooj ntawv thiab tso cai rau xdg-qhib los khiav, lub rooj sib tham popup qhov rai los ntawm Pidgin yuav qhib tau. Kuv zoo siab npaum li cas.
Kev txhawb nqa los ntawm kev ua tiav, Kuv txiav txim siab ua ib yam rau kuv qhov browser tseem ceeb, Mozilla Firefox. Thaum koj nkag mus rau hauv tus hma liab, ib nplooj ntawv rau kev tso cai qhib thiab nyob rau hauv qab kawg yog ib lub pob koom nrog siv chaw ua haujlwm sib txuas lus. Nws yog tus uas tau txais kuv lub siab. Thaum koj nyem rau ntawm nws hauv browser, nws mus rau qhov chaw nyob:

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

uas nws ua siab zoo qhia kuv tias nws tsis paub yuav ua li cas qhib nws thiab, tej zaum, kuv tsis muaj daim ntawv thov cuam tshuam rau cov txheej txheem zoo li no. Zoo, peb twb tau dhau qhov no.

Kuv sau npe sai sai rau kuv daim ntawv thov ntawv kuj rau uri scheme conf thiab ... tsis muaj dab tsi tshwm sim. Tus browser pheej yws yws tias tsis muaj daim ntawv thov uas tswj kuv qhov txuas. Hauv qhov no, hu xdg-qhib los ntawm lub console nrog cov tsis ua haujlwm zoo kawg nkaus.

"Teem kev cai raws tu qauv tuav hauv firefox" - Kuv tau mus online nrog cov lus nug no. Tom qab mus dhau ntau qhov kev sib tham ntawm stackoverflow (thiab qhov twg peb yuav tsis muaj nws), nws zoo li cov lus teb tau pom. Koj yuav tsum tau tsim ib tug tshwj xeeb parameter nyob rau hauv txog: config (ntawm chav kawm hloov foo nrog conf):

network.protocol-handler.expose.foo = false

Peb tsim nws, qhib qhov txuas thiab ... tsis muaj hmoo. Lub browser, zoo li tsis muaj dab tsi tshwm sim, hais tias nws tsis paub peb daim ntawv thov.

Kuv tab tom nyeem cov ntaub ntawv raug cai ntawm kev tso npe cov txheej txheem los ntawm Mozilla, muaj kev xaiv rau npe koom nrog hauv gnome desktop nws tus kheej (hloov foo nrog conf, tau kawg):

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

Kuv sau npe, qhib qhov browser ... thiab dua cov hwj txwv.

Ntawm no ib kab los ntawm cov ntaub ntawv catches kuv lub qhov muag:

Lwm zaus koj nyem qhov txuas ntawm txoj cai-hom foo koj yuav raug nug seb daim ntawv thov twg qhib nws nrog.

β€” Semyon Semenych
-Ahh

Peb tsis nyem rau ntawm qhov txuas, tab sis lub vev xaib tsuas yog hloov pauv window.location ntawm javascript. Kuv sau cov ntaub ntawv html yooj yim nrog qhov txuas mus rau conf raws tu qauv, qhib nws hauv browser, nyem rau ntawm qhov txuas - Yos! Lub qhov rais qhib nug hauv daim ntawv thov twg peb yuav tsum qhib peb qhov txuas, thiab qhov ntawd peb twb muaj peb daim ntawv thov Lync hauv daim ntawv teev npe - peb ua siab ncaj rau nws txhua txoj hauv kev. Nyob rau hauv lub qhov rais muaj ib tug checkbox "Nco ntsoov qhov kev xaiv thiab ib txwm qhib kev txuas nyob rau hauv peb daim ntawv thov", kos nws, nias ok. Thiab qhov no yog qhov thib ob yeej - lub rooj sib tham qhov rais qhib. Nyob rau tib lub sijhawm, qhib lub rooj sib tham ua haujlwm tsis yog thaum koj nyem rau ntawm qhov txuas, tab sis kuj thaum tsiv los ntawm nplooj ntawv koom peb xav tau rau lub rooj sib tham.

Tom qab ntawd kuv txheeb xyuas, tshem tawm cov kev txwv network.protocol-handler.expose.conf tsis muaj kev cuam tshuam rau kev ua haujlwm ntawm cov txheej txheem hauv Fox. Cov kev txuas txuas ntxiv mus ua haujlwm.

xaus

Kuv tau xa tag nrho kuv cov haujlwm mus rau GitHub repository; txuas mus rau txhua qhov kev pabcuam yuav nyob rau qhov kawg ntawm tsab xov xwm.
Kuv yuav txaus siab tau txais cov lus qhia los ntawm cov neeg uas xav siv kuv txoj haujlwm. Kuv yuav tsum nco ntsoov tam sim ntawd tias kuv tau ua txhua yam kev txhim kho tsuas yog rau kuv lub Linux Mint system, yog li qee qhov kev faib tawm lossis desktops yuav tsis ua haujlwm hauv cov ntawv ntawd. Lossis, kuv tseem yuav luag paub tseeb ntawm qhov no, vim kuv tsuas yog patched 1 txoj haujlwm hauv xdg-qhib uas cuam tshuam rau kuv DE nkaus xwb. Yog tias koj xav ntxiv kev txhawb nqa rau lwm lub tshuab lossis desktops, sau kuv rub cov lus thov ntawm Github.

Tag nrho qhov project siv 1 yav tsaus ntuj kom tiav.

Links:

Tau qhov twg los: www.hab.com

Ntxiv ib saib