Fidirana mandeha ho azy amin'ny fihaonambe Lync amin'ny Linux

Hey Habr!

Amiko dia mitovy amin'ny hello world ity fehezanteny ity, satria tonga tamin'ny fanontanako voalohany aho. Nandao ity fotoana mahafinaritra ity nandritra ny fotoana ela aho, satria tsy nisy na inona na inona hosoratana, ary tsy te hifoka zavatra efa notsapaina imbetsaka aho. Amin'ny ankapobeny, ho an'ny fanontana voalohany nataoko dia naniry zavatra tany am-boalohany aho, mahasoa ny hafa ary misy karazana fanamby sy famahana olana. Ary izao dia afaka mizara izany aho. Andeha isika hiresaka momba ny zava-drehetra araka ny filaharany.

teny

Nanomboka izany rehetra izany rehefa nisintona Linux Mint tamin'ny ordinaterako aho. Betsaka ny olona mahafantatra fa ny Pidgin miaraka amin'ny plugin Sipe dia fanoloana mety tsara ho an'ny Microsoft Lync (antsoina hoe Skype ho an'ny orinasa ankehitriny) ho an'ny rafitra Linux. Noho ny mombamomba ny asako dia matetika aho no tsy maintsy mandray anjara amin'ny fihaonambe SIP, ary fony aho mpiasa Windows, ny fidirana amin'ny kaonferansa dia ambaratonga fototra: mahazo fanasana amin'ny alΓ lan'ny mailaka izahay, tsindrio ny rohy fidirana, ary vonona ny handeha izahay. .

Rehefa mifindra amin'ny lafiny maizina amin'ny Linux dia nanjary sarotra kokoa ny zava-drehetra: mazava ho azy, azonao atao koa ny miditra amin'ny fihaonambe ao Pidgin, fa raha te hanao izany ianao dia mila misafidy ny safidin'ny fihaonambe ao amin'ny menio ao amin'ny fananan'ny kaontinao SIP ary eo amin'ny varavarankely misokatra, ampidiro rohy mankany amin'ny fihaonambe na ampidiro ny anaran'ny mpikarakara sy conf id. Ary rehefa afaka kelikely dia nanomboka nieritreritra aho hoe: "Azo atao ve ny manatsotra izany?" Eny, mety hiteny ianao hoe, maninona no mila an'ity ianao? Aleoko mipetraka amin'ny Windows fa tsy mitsoka ny saiko.

Dingana 1: Fikarohana

β€œRaha toa ianao ka mahazo sitraka ao an-dohanao, dia tsy ho afaka handondona azy amin'ny tsato-kazo ianao,” hoy i Nekrasov tao amin'ny sanganasany hoe β€œIza no Miaina Tsara any Rosia.”

Noho izany, raha vao niditra tao an-dohako ilay eritreritra, rehefa afaka kelikely, dia nipoitra ny hevitra voalohany momba ny fampiharana. Toa tsotra ny zava-drehetra - mila manakana ny fidirana amin'ny rohy ianao meet.company.com/user/confid β€” Mametraha fizotry ny fampiharana tranonkala eo an-toerana amin'ny fiaranao amin'ny 127.0.0.1 ary ao amin'ny /etc/hosts ampio ny fidirana static ho an'ny sehatry ny orinasa izay hidiranao amin'ny fihaonambe, manondro ny localhost. Manaraka izany, ity mpizara tranonkala ity dia tsy maintsy manodina ny rohy tonga ao aminy ary mamindra izany ao anatin'ny Pidgin (Holazaiko avy hatrany fa amin'ity dingana ity dia mbola tsy fantatro ny fomba hanomezana azy io mihitsy). Ny vahaolana, mazava ho azy, dia maimbo toy ny tehina, fa isika dia programmer, tehina tsy mampatahotra antsika (shit).

Avy eo, kisendrasendra, nanokatra ny rohy fanasana tao amin'ny Google Chrome aho (ary matetika mampiasa Mozilla Firefox foana aho). Ary nahagaga ahy fa hafa tanteraka ny pejy web - tsy nisy endrika fampidirana angon-drakitra mpampiasa ary avy hatrany rehefa niditra tao amin'ny pejy dia nisy fangatahana hanokatra zavatra amin'ny alΓ lan'ny xdg-misokatra. Mba hahafinaritra fotsiny dia tsindrio ny "eny" ary misy hafatra diso - tsy azo sokafana ny rohy lync15:confjoin?url=https://meet.company.com/user/confid. Hmm. Inona no karazana xdg-open ity ary inona no ilainy mba hisokafan'ny rohy toy izany? Ny famakiana ny antontan-taratasim-panadihadiana dia nanambara fa mpitantana GUI izy io izay manampy amin'ny fampandehanana ny rindranasa mifandraika na amin'ny protocols ho an'ny rafitra uri na amin'ny karazana rakitra manokana. Ny fikambanana dia amboarina amin'ny alalan'ny sari-tany karazana mime. Noho izany dia hitantsika fa mikaroka fampiharana mifanentana amin'ny rafitra uri antsoina hoe lync15 ary ny rohy dia alefa amin'ny xdg-open, izay avy eo, amin'ny teoria, dia tokony hampita izany amin'ny fampiharana sasany izay tompon'andraikitra amin'ity karazana rohy ity. Izay, mazava ho azy, tsy ananantsika ao amin'ny rafitra misy antsika. Raha tsy izany, inona no ataon'izy ireo amin'ny tontolo misokatra? Marina izany fa ny tenanay no hanoratra azy.

Ny fampidirana bebe kokoa ao amin'ny tontolon'ny Linux ary indrindra amin'ny fandalinana ny fomba fiasan'ny akorandriaka (desktop environment, DE), raha ny marina, manana Xfce ao amin'ny Linux Mint aho, dia nampiseho fa ny fampiharana sy ny karazana mime mifandray aminy dia matetika nosoratana mivantana fisie hitsin-dΓ lana miaraka amin'ny fanitarana .desktop. Eny ary, maninona raha, mamorona hitsin-dΓ lana tsotra aho, izay tokony handefa script bash fotsiny ary hamoaka ny tohan-kevitra nampitaina tamin'ny console, dia ny rakitra hitsin-dΓ lana ihany no omeko:

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

Manokatra xdg-open avy amin'ny console aho, mandalo ny rohy mitovy amin'ny navigateur ary ... bummer. Averina indray fa tsy afaka manodina ny rohy.

Raha ny fantatra dia tsy nanavao ny lahatahiry misy karazana mime mifandraika amin'ny fampiharana ahy aho. Izany dia atao amin'ny baiko tsotra:

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

izay manova fotsiny ny rakitra ~/.config/mimeapps.list.

Andrana laharana 2 miaraka amin'ny antso xdg-open - ary tsy nahomby indray. Tsia, tsy mampatahotra antsika ny fahasahiranana, fa mampirongatra ny fahalianantsika fotsiny. Ary mitam-piadiana miaraka amin'ny herin'ny bash rehetra (izany hoe tracing), dia mirotsaka voalohany amin'ny debugging izahay. Zava-dehibe ny manamarika eto fa ny xdg-open dia script shell fotsiny.

bash -x xdg-open $url

Ny famakafakana ny vokatra aorian'ny fanarahana dia lasa mazava tsara fa ny fanaraha-maso dia nafindra any exo-open. Ary ity dia efa rakitra binary ary sarotra kokoa ny mahatakatra ny antony namerenany kaody fiverenana tsy nahomby rehefa mandefa rohy mankany aminy amin'ny adihevitra.

Rehefa nijery ny anatiny xdg-open aho, dia hitako fa mamakafaka ireo mari-pamantarana ara-tontolo iainana isan-karazany izy io ary mandalo fanaraha-maso bebe kokoa na amin'ny fitaovana sasany hanokafana rohy misy rakitra manokana amin'ny DE iray manokana, na manana fiasa miverina. 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
}

Hampidiriko haingana eto ny hack kely miaraka amin'ny famakafakana ny tohan-kevitra nandalo ary raha misy ny sobika manokana misy anay lync15:, avy eo dia mamindra avy hatrany ny fanaraha-maso amin'ny fiasa open_generic.

Andrana laharana 3 ary heverinao fa nahomby? Eny, ankehitriny, mazava ho azy. Saingy efa niova ny hafatra diso, efa mandroso izao - izao izy dia nilaza tamiko fa tsy hita ilay rakitra ary tamin'ny endrika rakitra no nanoratany ahy ilay rohy mitovy amin'ny adihevitra.

Tamin'ity indray mitoraka ity dia hita fa asa is_file_url_or_path, izay manadihady ny rohin'ny rakitra nampidirina tamin'ny fidirana: file:// na ny lalana mankany amin'ny rakitra na zavatra hafa. Ary tsy nandeha tsara ny fanamarinana noho ny fisian'ny prefix (skema url) antsika, ary ny fitenenana mahazatra dia manamarina fotsiny ny andian-tsoratra misy ny :alpha: teboka sy tsipika. Rehefa avy nandinika ny fenitra rfc3986 momba ny fanamiana loharanon-karena identifier Nazava fa tamin'ity indray mitoraka ity dia tsy manitsakitsaka na inona na inona i Microsoft (na dia nanana dikan-teny toy izany aza aho). Ny kilasin'ny toetra fotsiny :alpha: tsy misy afa-tsy litera amin'ny abidy latina. Ovaiko haingana ho alphanumeric ny fisavana mahazatra. Vita, mahagaga ianao, manomboka amin'ny farany ny zava-drehetra, mifehy rehefa omena ny fampiharana scripty ny fanamarinana rehetra, aseho amin'ny console ny rohy, araka ny tokony ho izy ny zava-drehetra. Aorian'izany dia manomboka miahiahy aho fa ny olana rehetra amin'ny exo-open dia noho ny fanamarinana ny format rohy noho ny isa ao amin'ny drafitra. Mba hitsapana ny petra-kevitra dia ovaiko ho tetika fotsiny ny fisoratana anarana karazana mime amin'ny fampiharana lync ary voila - miasa daholo ny zava-drehetra nefa tsy manafoana ny fiasa open_xfce. Saingy tsy hanampy antsika amin'ny fomba rehetra izany, satria ny pejy web hidirana amin'ny fihaonambe dia mamorona rohy miaraka amin'ny lync15.

Noho izany, vita ny ampahany voalohany amin'ny dia. Fantatsika ny fomba fisakanana antso an-tariby ary avy eo mila karakaraina sy ampitaina ao anatin'ny Pidgin. Mba hahatakarana ny fomba fiasan'ny anatiny rehefa miditra angon-drakitra amin'ny alΓ lan'ny rohy ao amin'ny menio "miditra amin'ny fihaonambe", dia nanangona ny tahiry Git an'ny tetikasa Sipe aho ary niomana ny hiditra ao anaty kaody indray. Saingy avy eo, soa ihany fa nahasarika ahy ireo soratra ao amin'ny katalaogy contrib/dbus/:

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

Hita fa ny plugin Sipe dia azo ampiasaina amin'ny fifandraisana amin'ny alΓ lan'ny dbus (bus desktop) ary ao anatin'ny script dia misy ohatra ny fidirana amin'ny fihaonambe amin'ny alΓ lan'ny rohy, na amin'ny anaran'ny mpikarakara sy conf-id, na azonao atao ny manomboka antso amin'ny sip . Izany indrindra no tsy hitanay.

Dingana 2. Fametrahana mpitantana autojoin

Satria misy ohatra efa vita ao Pearl, dia nanapa-kevitra ny hampiasa fotsiny aho sipe-join-conference-with-uri.pl ary ovao kely mba hifanaraka amin'ny tenanao. Afaka manoratra amin'ny Pearl aho, ka tsy niteraka fahasahiranana manokana izany.

Rehefa avy nanandrana ny script misaraka aho dia nanoratra ny antsony tao anaty rakitra lync.desktop. Ary fandresena izany! Rehefa miditra ao amin'ny pejin'ny fihaonambe ary mamela ny xdg-misokatra, dia hisokatra ho azy ny varavarankely popup avy amin'ny Pidgin. Tena faly aho.
Nampahery ahy ny fahombiazana, nanapa-kevitra ny hanao toy izany koa aho amin'ny navigateur lehibe indrindra, Mozilla Firefox. Rehefa miditra amin'ny alΓ lan'ny fox ianao dia misokatra ny pejy hahazoana alalana ary eo amin'ny farany ambany dia misy bokotra Midira amin'ny alΓ lan'ny fifandraisana amin'ny birao. Izy no nisarika ny saiko. Rehefa manindry azy amin'ny navigateur ianao dia mankany amin'ny adiresy:

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

izay ilazany ahy am-pitiavana fa tsy hainy ny manokatra izany ary, angamba, tsy manana fampiharana mifandraika amin'izany protocol izany aho. Eny, efa nandalo an'izany isika.

Manoratra haingana ny fangatahako script aho ho an'ny rafitra uri conf ary... tsy misy zavatra mitranga. Mitaraina hatrany ny navigateur fa tsy misy fampiharana mitantana ny rohiko. Amin'ity tranga ity, ny fiantsoana xdg-open avy amin'ny console miaraka amin'ny parameter dia miasa tsara.

"Mametraha mpandrindra protocol manokana amin'ny firefox" - Nandeha an-tserasera aho tamin'ity fanontaniana ity. Rehefa avy nandalo fifanakalozan-kevitra maromaro momba ny stackoverflow (ary aiza ho aiza isika raha tsy misy izany), dia toa hita ny valiny. Mila mamorona paramètre manokana ianao in About: config (mazava ho azy soloy ny foo amin'ny conf):

network.protocol-handler.expose.foo = false

Mamorona azy izahay, sokafy ny rohy ary ... tsy misy vintana toy izany. Ny navigateur, toy ny hoe tsy nisy na inona na inona, dia milaza fa tsy mahalala ny fampiharana.

Mamaky ny antontan-taratasy ofisialy momba ny fisoratana anarana protocol avy amin'ny Mozilla aho, misy safidy hisoratra anarana fikambanana ao amin'ny desktop gnome mihitsy (manoloana ny foo amin'ny conf, mazava ho azy):

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

Misoratra anarana aho, sokafy ny navigateur ... ary indray ny volombava.

Ity misy andalana avy amin'ny antontan-taratasy manaitra ny masoko:

Amin'ny manaraka ianao manindry rohy misy protocol-type foo dia hanontaniana ianao hoe inona no fampiharana hanokafana azy.

β€” Semyon Semenych
- Ahy

Tsy manindry ny rohy izahay, fa ny pejy web dia manova fotsiny ny window.location amin'ny javascript. Manoratra rakitra html tsotra aho miaraka amin'ny rohy mankany amin'ny protocol conf, sokafy amin'ny navigateur, tsindrio ny rohy - Yos! Misy varavarankely misokatra manontany hoe inona ny rindranasa tokony hanokatra ny rohinay, ary eo dia efa misy ny fampiharana Lync-nay ao anaty lisitra - nosoratanay tamim-pahatsorana izany tamin'ny fomba rehetra azo atao. Ao amin'ny varavarankely dia misy boaty "tadidio ny safidy ary sokafy foana ny rohy ao amin'ny fampiharana anay", mariho izany, tsindrio ok. Ary ity no fandresena faharoa - misokatra ny varavarankelin'ny fihaonambe. Mandritra izany fotoana izany, ny fanokafana kaonferansa dia tsy miasa fotsiny rehefa manindry rohy ianao, fa koa rehefa miala amin'ny pejy fidirana mila mankany amin'ny fihaonambe.

Dia nanamarina aho, mamafa paramètre network.protocol-handler.expose.conf tsy nisy fiantraikany tamin'ny fiasan'ny protocol amin'ny Fox. Nitohy niasa ireo rohy.

famaranana

Efa nampiakatra ny asako rehetra tao amin'ny tahiry GitHub aho; Ny rohy mankany amin'ny loharano rehetra dia ho any amin'ny faran'ny lahatsoratra.
Ho liana amin'ny fandraisana hevitra avy amin'ireo izay te hampiasa ny asako aho. Tokony ho marihiko avy hatrany fa nataoko ho an'ny rafitra Linux Mint ihany ny fivoarana rehetra, ka mety tsy mandeha amin'io dikan-teny io ny fizarana na birao hafa. Na ny marimarina kokoa, saika azoko antoka izany, satria 1 fotsiny no napetako tamin'ny xdg-open izay mifandraika amin'ny DE-ko ihany. Raha te-hanampy fanohanana ho an'ny rafitra hafa na biraonao ianao dia manorata ahy misintona fangatahana amin'ny Github.

Naharitra 1 hariva ny tetikasa manontolo.

andinin-tsoratra masina:

Source: www.habr.com

Add a comment