په لینکس کې د لینک کنفرانسونو ته اتوماتیک ننوتل

اې حبره!

زما لپاره، دا جمله د هیلو نړۍ سره ورته ده، ځکه چې زه په پای کې زما لومړۍ خپرونې ته ورسیدم. ما دا په زړه پورې شیبه د اوږدې مودې لپاره پریښوده، ځکه چې د لیکلو لپاره هیڅ شی نه و، او ما هم نه غوښتل چې هغه څه وخورم چې دمخه یې څو ځله چوسلي وي. په عموم کې، زما د لومړۍ خپرونې لپاره ما یو څه اصلي، د نورو لپاره ګټور او یو ډول ننګونې او د ستونزې حل کول غوښتل. او اوس زه کولی شم دا شریک کړم. اوس راځئ چې په ترتیب سره د هرڅه په اړه وغږیږو.

د ننوتلو

دا ټول هغه وخت پیل شول کله چې یو څه وخت دمخه ما په خپل کاري کمپیوټر کې لینکس مینټ ډاونلوډ کړ. ډیری خلک شاید پوهیږي چې د سایپ پلگ ان سره Pidgin د لینکس سیسټمونو لپاره د مایکروسافټ لینک (اوس د سوداګرۍ لپاره سکایپ ویل کیږي) لپاره په بشپړ ډول مناسب بدیل دی. زما د کار د ځانګړتیاوو له امله، زه ډیری وختونه د SIP په کنفرانسونو کې برخه اخلم، او کله چې زه د وینډوز کارکوونکی وم، کنفرانسونو ته ننوتل ابتدايي وو: موږ د بریښنالیک له لارې بلنه ترلاسه کوو، د ننوتلو لینک باندې کلیک وکړئ، او موږ چمتو یو چې لاړ شو. .

کله چې د لینکس تیاره اړخ ته لاړشئ ، هرڅه یو څه نور پیچلي شوي: البته ، تاسو کولی شئ په پیډګین کې کنفرانسونو ته هم ننوتلی شئ ، مګر د دې کولو لپاره تاسو اړتیا لرئ د خپل SIP حساب ملکیتونو کې مینو کې د ګډون کنفرانس اختیار غوره کړئ او په هغه کړکۍ کې چې خلاصیږي ، کنفرانس ته لینک دننه کړئ یا د تنظیم کونکي نوم او کنف ID دننه کړئ. او یو څه وخت وروسته ما فکر پیل کړ: "ایا دا ممکنه ده چې دا یو څه ساده کړي؟" هو، تاسو شاید ووایاست، ولې تاسو دې ته اړتیا لرئ؟ زه به په وینډوز کې کښیناستم او خپل ذهن ته زیان ونه رسوم.

لومړی ګام: څیړنه

"که تاسو په خپل سر کې یو ډول څپې ترلاسه کړئ ، تاسو نشئ کولی دا په داغ سره وباسئ" - دا هغه څه دي چې نیکروسوف په خپل کار کې وویل "څوک په روسیه کې ښه ژوند کوي."

نو، کله چې فکر زما په سر کې راغی، یو څه وخت وروسته د پلي کولو لپاره لومړی نظر راڅرګند شو. هرڅه ساده ښکاري - تاسو اړتیا لرئ لینکونو ته لاسرسی مداخله وکړئ meet.company.com/user/confid - په خپل موټر کې په 127.0.0.1 کې د محلي ویب غوښتنلیک پروسه نصب کړئ او په /etc/hosts کې د شرکت ډومین لپاره یو جامد داخله اضافه کړئ چې له لارې یې تاسو کنفرانس ته ننوځي، لوکل هوسټ ته اشاره کوي. بیا ، دا ویب سرور باید هغه لینک پروسس کړي چې ورته راغلی او یو څه یې د پیډګین دننه لیږدوي (زه به سمدلاسه ووایم چې پدې مرحله کې زه لاهم نه پوهیدم چې دا څنګه ورته ورکړم). د حل لاره، البته، د بیساکو په څیر بوی لري، مګر موږ پروګرام کونکي یو، بیساکې موږ نه ډاروي (شټ).

بیا، په اتفاق سره، ما یو څه په ګوګل کروم کې د بلنې لینک خلاص کړ (او معمولا زه تل د موزیلا فایرفاکس کاروم). او زما د حیرانتیا لپاره، ویب پاڼه په بشپړه توګه مختلف ښکاري - د کاروونکي ډیټا ته د ننوتلو لپاره هیڅ فورمه شتون نلري او د پاڼې د ننوتلو سمدستي وروسته د یو څه د خلاصولو غوښتنه وه xdg-خلاص. یوازې د ساتیرۍ لپاره ، زه "هو" کلیک کړم او د خطا پیغام څرګندیږي - لینک lync15:confjoin?url=https://meet.company.com/user/confid نشي خلاصیدلی. هوم. دا کوم ډول xdg-open دی او د دې ډول لینکونو خلاصیدو لپاره څه ته اړتیا لري؟ د اسنادو د پوسټ مارټم لوستلو څرګنده کړه چې دا د GUI اداره کونکی دی چې د اړوند غوښتنلیکونو چلولو کې مرسته کوي یا د uri سکیم پروتوکولونو سره یا د ځینې فایل ډولونو سره. اتحادیې د مایم ډول نقشه کولو له لارې تنظیم شوي. نو موږ ګورو چې موږ د uri سکیم په نوم د یو مناسب غوښتنلیک لپاره لټون کوو lync15 او لینک xdg-open ته لیږدول کیږي، کوم چې بیا، په تیوري کې، دا باید ځینې غوښتنلیک ته انتقال کړي چې د دې ډول لینک لپاره مسؤل وي. کوم چې، البته، موږ په خپل سیسټم کې نه لرو. که نه، نو دوی د خلاصې سرچینې نړۍ کې څه کوي؟ دا سمه ده، موږ به دا پخپله لیکو.

د لینکس نړۍ کې نور ډوبیدل او په ځانګړي توګه د مطالعې په برخه کې چې څنګه ګرافیکي شیل (د ډیسټاپ چاپیریال ، DE) کار کوي ، په هرصورت ، زه په لینکس مینټ کې Xfce لرم ، وښودله چې غوښتنلیکونه او د دې سره تړلي مایم ډول معمولا په مستقیم ډول لیکل کیږي. شارټ کټ فایلونه د توسیع .desktop سره. ښه ، ولې نه ، زه یو ساده غوښتنلیک شارټ کټ رامینځته کوم ، کوم چې باید په ساده ډول د بش سکریپټ پیل کړي او کنسول ته لیږل شوي دلیل تولید کړي ، زه یوازې پخپله د شارټ کټ فایل چمتو کوم:

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

زه د کنسول څخه xdg-open پیلوم، د ورته لینک څخه تیریږم چې د براوزر څخه راځي او ... bummer. بیا بیا وايي چې دا نشي کولی لینک پروسس کړي.

لکه څنګه چې دا وګرځيده، ما د خپل غوښتنلیک سره د اړونده مایوم ډولونو لارښود تازه نه کړ. دا د ساده کمانډ سره ترسره کیږي:

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

کوم چې په ساده ډول فایل ایډیټ کوي ~/.config/mimeapps.list.

د xdg-open کال سره د 2 شمیره هڅه - او بیا ناکامي. هیڅ شی، ستونزې موږ نه ډاروي، مګر یوازې زموږ ګټو ته وده ورکوي. او د باش د ټول ځواک سره مسلح (د بیلګې په توګه تعقیب)، موږ لومړی سر په ډیبګ کولو کې ډوبوو. دا مهمه ده چې دلته یادونه وکړو چې xdg-open یوازې د شیل سکریپټ دی.

bash -x xdg-open $url

د تعقیب وروسته د محصول تحلیل یو څه روښانه کیږي چې کنټرول بیا لیږدول کیږي خلاص. او دا لا دمخه یو بائنری فایل دی او دا خورا ستونزمن کار دی چې پوه شي چې ولې دا د بیرته راستنیدو ناکام کوډ بیرته راګرځوي کله چې په دلیل کې دې ته لینک تیریږي.

د xdg-open داخلي برخې ته په کتلو سره، ما وموندله چې دا د چاپیریال مختلف پیرامیټونه تحلیلوي او یا د یو ځانګړي DE لپاره ځانګړي د فایل لینکونو خلاصولو لپاره ځینې وسیلو ته نور کنټرول لیږدوي، یا دا د فال بیک فعالیت لري. خلاص_عمومي

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
}

زه به په چټکۍ سره دلته د تیر شوي دلیل تحلیل سره یو کوچنی هیک ځای په ځای کړم او که زموږ ځانګړي فرعي سټینګ هلته موقعیت ولري lync15:، بیا موږ سمدلاسه کنټرول فنکشن ته لیږدوو خلاص_عمومي.

د 3 شمیره هڅه او ایا تاسو فکر کوئ چې دا کار کړی؟ هو، اوس، البته. مګر د خطا پیغام لا دمخه بدل شوی ، دا دمخه پرمختګ دی - اوس هغه ماته وویل چې فایل ونه موندل شو او د فایل په توګه یې ما ته ورته لینک د دلیل په توګه ولیکه.

دا ځل دا یو فعالیت وګرځید is_file_url_or_path، کوم چې داخل ته لیږدول شوي فایل لینک تحلیل کوي: file:// یا فایل ته لاره یا بل څه. او چک د دې حقیقت له امله سم کار نه دی کړی چې زموږ مخفف (url سکیم) شمیرې لري، او منظم بیان یوازې د کرکټر سیټ ګوري چې : الفا: نقطې او ډشونه لري. د rfc3986 معیار سره مشورې وروسته یونیفورم سرچینې پیژندونکی دا څرګنده شوه چې دا ځل مایکروسافټ هیڅ شی نه سرغړونه کوي (که څه هم ما داسې نسخه درلوده). یوازې د کرکټر ټولګي :alpha: یوازې د لاتیني الفبا توري لري. زه په چټکۍ سره منظم چک الفانومریک ته بدلوم. بشپړ شوی ، تاسو حیران یاست ، هرڅه په نهایت کې پیل کیږي ، زموږ د سکریپټ غوښتنلیک ته د ټولو چکونو وروسته کنټرول ورکول کیږي ، زموږ لینک په کنسول کې ښودل کیږي ، هرڅه لکه څنګه چې باید وي. له دې وروسته، زه په شک پیل کوم چې د Exo-open سره ټولې ستونزې هم په سکیم کې د شمیرو له امله د لینک فارمیټ اعتبار له امله دي. د فرضیې ازموینې لپاره، زه د غوښتنلیک د مایم ډول ثبت کول یوازې یو سکیم ته بدلوم لینک او voila - هرڅه د open_xfce فنکشن له پامه غورځولو پرته کار کوي. مګر دا به موږ سره په هیڅ ډول مرسته ونکړي، ځکه چې کنفرانس ته د ننوتلو ویب پاڼه د lync15 سره یو لینک جوړوي.

نو د سفر لومړۍ برخه بشپړه شوه. موږ پوهیږو چې څنګه د لینک زنګ مداخله وکړو او بیا دا اړتیا ده چې یو څه پروسس شي او د پیډګین دننه تیر شي. د دې لپاره چې پوه شي چې دا څنګه په داخلي توګه کار کوي کله چې د "کنفرانس سره یوځای شئ" مینو کې د لینک له لارې ډیټا ته ننوځي ، ما د سایپ پروژې Git ذخیره کلون کړه او بیا کوډ ته ډوبولو ته چمتو شوم. مګر بیا، خوشبختانه، زه په کتلاګ کې د سکریپټونو لخوا جذب شوی وم contrib/dbus/:

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

دا معلومه شوه چې د سایپ پلگ ان د dbus (ډېسکټاپ بس) له لارې د متقابل عمل لپاره شتون لري او په سکریپټونو کې د لینک له لارې کنفرانس کې د ګډون کولو مثالونه شتون لري ، یا د تنظیم کونکي نوم او conf-id له لارې ، یا تاسو کولی شئ د sip له لارې تلیفون پیل کړئ. . دا په حقیقت کې هغه څه دي چې موږ یې ورک وو.

2 ګام. د آټوجوین هینډلر پلي کول

څرنګه چې په پرل کې چمتو شوي مثالونه شتون لري، ما پریکړه وکړه چې یوازې وکاروم sipe-join-conference-with-uri.pl او دا د ځان لپاره یو څه بدل کړئ. زه کولی شم په پرل کې ولیکم ، نو دا د کومې ځانګړې ستونزې لامل نه شو.

د سکریپټ په جلا توګه ازموینې وروسته، ما د هغې زنګ په فایل کې ولیکه lync.desktop. او دا یوه بریا وه! کله چې د کنفرانس شمولیت پا pageې ته ننوځي او xdg-open ته د چلولو اجازه ورکوي ، د Pidgin څخه د کنفرانس پاپ اپ کړکۍ به په اوتومات ډول خلاص شي. زه څنګه خوشحاله وم.
د بریالیتوب څخه هڅول، ما پریکړه وکړه چې زما د اصلي براوزر، موزیلا فایرفوکس لپاره هم ورته کار وکړم. کله چې تاسو د فاکس له لارې ننوتل، د اختیار لپاره یوه پاڼه خلاصیږي او په ښکته کې یو تڼۍ شتون لري د دفتر مخابراتو په کارولو سره یوځای شئ. هغه هغه وه چې زما پام یې ځان ته را اړولی و. کله چې تاسو په براوزر کې کلیک وکړئ، دا پتې ته ځي:

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

کوم ته چې هغه په ​​​​مهربانۍ سره ماته وايي چې هغه نه پوهیږي چې څنګه یې خلاص کړي او شاید زه د داسې پروتوکول لپاره اړوند غوښتنلیک نلرم. ښه، موږ دمخه له دې څخه تیر شوي یو.

زه په چټکۍ سره زما د سکریپټ غوښتنلیک د uri سکیم لپاره هم راجستر کوم conf او... هیڅ نه کیږي. براوزر شکایت کوي چې هیڅ داسې غوښتنلیک شتون نلري چې زما لینکونه اداره کړي. پدې حالت کې ، د پیرامیټونو سره د کنسول څخه xdg-open زنګ وهل په بشپړ ډول کار کوي.

"په فایرفاکس کې د دودیز پروتوکول هینډلر تنظیم کړئ" - زه د دې پوښتنې سره آنلاین شوم. د سټیک اوور فلو په اړه د څو خبرو اترو وروسته (او موږ به له دې پرته چیرته یو)، داسې ښکاري چې ځواب وموندل شو. تاسو اړتیا لرئ چې یو ځانګړی پیرامیټر جوړ کړئ په اړه: config (البته د conf سره foo ځای په ځای کول):

network.protocol-handler.expose.foo = false

موږ یې جوړوو، لینک یې خلاصوو او... داسې بخت نشته. براوزر، لکه څنګه چې هیڅ شی نه و، وايي چې دا زموږ غوښتنلیک نه پوهیږي.

زه د موزیلا څخه د پروتوکول راجستر کولو رسمي اسناد لولم ، پخپله د ګینوم ډیسټاپ کې د اتحادیې راجستر کولو اختیار شتون لري (البته د conf سره foo ځای په ځای کول):

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

زه راجستر کړم، براوزر خلاص کړم ... او بیا ږیره.

دلته د اسنادو یوه کرښه زما سترګې نیسي:

بل ځل چې تاسو د پروتوکول ډوله foo لینک کلیک وکړئ تاسو به وپوښتل شي چې کوم غوښتنلیک یې خلاص کړئ.

– سیمیون سیمنیچ
- اه

موږ په لینک کلیک نه کوو، مګر ویب پاڼه په ساده ډول د جاوا سکرپٹ له لارې window.location بدلوي. زه د conf پروتوکول ته د لینک سره یو ساده html فایل لیکم ، په براوزر کې یې خلاص کړئ ، په لینک کلیک وکړئ - Yos! یوه کړکۍ پرانستل کیږي چې پوښتنه کوي چې په کوم غوښتنلیک کې موږ اړتیا لرو خپل لینک خلاص کړو، او هلته موږ دمخه زموږ د لینک غوښتنلیک په لیست کې لرو - موږ په صادقانه ډول دا په ټولو ممکنه لارو ثبت کړی. هلته په کړکۍ کې یو چیک باکس شتون لري "انتخاب په یاد ولرئ او تل زموږ په غوښتنلیک کې لینکونه خلاص کړئ"، دا په نښه کړئ، په سمه توګه کلیک وکړئ. او دا دویمه بریا ده - د کنفرانس کړکۍ خلاصیږي. په ورته وخت کې ، د کنفرانسونو پرانیستل نه یوازې هغه وخت کار کوي کله چې تاسو په لینک کلیک وکړئ ، بلکه کله چې د یوځای کیدو پا pageې څخه حرکت کوئ موږ کنفرانس ته اړتیا لرو.

بیا ما چک کړه، د پیرامیټونو حذف کول network.protocol-handler.expose.conf په هیڅ ډول په فاکس کې د پروتوکول عملیات اغیزه نه کوي. لینکونو کار ته دوام ورکړ.

پایلې

ما خپل ټول کار د GitHub ذخیره کې اپلوډ کړی؛ د ټولو سرچینو لینکونه به د مقالې په پای کې وي.
زه به د هغو کسانو څخه فیډبیک ترلاسه کولو کې علاقه لرم څوک چې غواړي زما کار وکاروي. زه باید سمدلاسه یادونه وکړم چې ما ټول پرمختګ یوازې زما د لینکس مینټ سیسټم لپاره کړی ، نو ځینې نور توزیع یا ډیسټاپونه ممکن پدې نسخه کې کار ونکړي. یا بلکه ، زه حتی پدې اړه نږدې ډاډه یم ، ځکه چې ما په xdg-open کې یوازې 1 فنکشن پیچ کړی چې یوازې زما DE پورې اړه لري. که تاسو غواړئ د نورو سیسټمونو یا ډیسټاپونو لپاره ملاتړ اضافه کړئ ، نو ما په ګیتوب کې د پلولو غوښتنې ولیکئ.

ټوله پروژه د بشپړیدو لپاره 1 ماښام وخت نیسي.

سرچینې:

سرچینه: www.habr.com

Add a comment