| IRKERD(8) | دستورات (Commands) | IRKERD(8) |
نام (NAME)
irkerd - دیمن دروازه IRC
خلاصه دستور (SYNOPSIS)
irkerd [-c ca-file] [-d debuglevel] [-e cert-file] [-l logfile] [-H host] [-n nick] [-p password] [-P password-file] [--sasl-mechanism PLAIN|EXTERNAL] [--sasl-username username] [--sasl-password password] [--sasl-password-file password-file] [-i IRC-URL] [-t timeout] [-V] [-h] [message text]
توضیحات (DESCRIPTION)
irkerd یک کلاینت IRC تخصصی فقطنوشتنی (write-only) است که برای ارسال پیامهای اعلان به کانالهای IRC در نظر گرفته شده است. کاربرد اصلی مدنظر در زمان طراحی آن، انتشار اعلانها از قلابهای کامیت (commit hooks) در سامانههای کنترل نسخه بوده است.
مزیت اصلی بازپخش پیامها از طریق این دیمن نسبت به ارسالهای اسکریپتی مجزا از سمت برنامهها این است که میتواند وضعیت اتصال به چندین کانال را حفظ کند، به جای اینکه با ارسال هر پیام، اسپم آزاردهندهای از ورود/خروج (join/leave) در کانال ایجاد نماید.
irkerd یک سوکت سرور است که برای دریافت بستههای UDP یا TCP روی پورت 6659 به خطوط درخواستی متنی حاوی اشیاء JSON و خاتمهیافته با خط جدید (newline) گوش فرا میدهد. هر شیء JSON باید دارای دو عضو باشد: "to" که مقصد یا فهرستی از مقصدها را مشخص میکند، و "privmsg" که متن پیام را معین میسازد. مثالها:
{"to":"irc://chat.freenode.net/git-ciabot", "privmsg":"Hello, world!"}
{"to":["irc://chat.freenode.net/#git-ciabot","irc://chat.freenode.net/#gpsd"],"privmsg":"Multichannel test"}
{"to":"irc://chat.hypothetical.net:6668/git-ciabot", "privmsg":"Hello, world!"}
{"to":"ircs://chat.hypothetical.net/git-private?key=topsecret", "privmsg":"Keyed channel test"}
{"to":"ircs://:topsecret@chat.example.net/git-private", "privmsg":"Password-protected server test"}
اگر بخش کانال در URL دارای یکی از کاراکترهای پیشوند “#”, “&”, یا “+” نباشد، قبل از ارسال یک “#” به ابتدای آن اضافه میشود - مگر اینکه بخش کانال دارای پسوند ",isnick" باشد (که این پسوند بدون قید و شرط حذف میشود).
بخش میزبان در URL میتواند دارای یک پسوند شماره پورت باشد که با دو نقطه جدا شده است، همانطور که در مثال سوم نشان داده شده است؛ در غیر این صورت irkerd پیامهای متنی ساده را به پورت پیشفرض 6667 سرورهای IRC، و پیامهای دارای رمزنگاری SSL/TLS را به پورت 6697 ارسال میکند.
رمز عبور برای سرورهای محافظتشده با کلمه عبور میتواند با استفاده از ساختار معمول “[{username}:{password}@]{host}:{port}” تعریفشده در RFC 3986 تنظیم شود، همانطور که در مثال پنجم نشان داده شده است. نامهای کاربری غیرخالی در URL جایگزین نام کاربری پیشفرض “irker” میشوند.
زمانی که در URL بخش “to” از طرحواره (scheme) “ircs” استفاده شود (همانطور که در مثالهای چهارم و پنجم نشان داده شده است)، اتصال به سرور IRC از طریق SSL/TLS برقراری میگردد (در مقایسه با اتصال متن ساده با طرحواره “irc”). میتوانید با استفاده از “-c /etc/ssl/certs/ca-certificates.crt” یک فایل CA سفارشی اعلام کنید، اما اگر آن را تنظیم نکنید irkerd از فایل پیشفرض OpenSSL (با استفاده از “ssl.SSLContext.set_default_verify_paths” پایتون) استفاده خواهد کرد؛ “ssl.match_hostname” به منظور اطمینان از تعلق گواهی سرور به میزبان مورد نظر و همچنین امضا شدن آن توسط یک CA معتبر استفاده میشود.
جهت پیوستن به کانالهای محافظتشده با رمز عبور (حالت +k)، بخش کانال در URL میتواند با یک رشته پرسوجو (query string) دنبال شود که کلید کانال را مشخص میکند، به شکل “?secret” یا “?key=secret”، که در آن “secret” کلید کانال است.
ارسال یک پیام خالی مجاز است و باعث میشود irkerd به کانالهای هدف بپیوندد یا اتصال خود را با آنها حفظ کند بدون اینکه پیامی منتشر سازد. این ویژگی ممکن است برای اعلان این موضوع که یک نمونه فعال و در حال اجرا است، یا برای پیوستن به یک کانال جهت ثبت لاگ ترافیک آن مفید باشد.
گزینهها (OPTIONS)
irkerd گزینههای زیر را میپذیرد:
-d
ثبت لاگ در خروجی خطای استاندارد (اگر irkerd در پیشزمینه اجرا شود) یا در “/dev/syslog” با تسهیلات "daemon" (اگر irkerd در پسزمینه اجرا شود) انجام خواهد شد. وضعیت پسزمینه بودن irkerd از طریق مقایسه شناسه گروه پردازش با گروه پردازش مرتبط با ترمینال متصل به خروجی استاندارد (stdout) تعیین میشود (عدم تطابق نشاندهنده پردازشهای پسزمینه است). فرض بر این است که شما irkerd را در ویندوز یا سیستمعامل دیگری که از “os.getpgrp” یا “tcgetpgrp” پشتیبانی نمیکند اجرا نمیکنید. ما فرض میکنیم که اگر stdout به یک TTY مرتبط با همان گروه پردازشی irkerd متصل باشد، شما قصد دارید لاگ را به stderr بفرستید و نه syslog.
-e
-l
-H
-n
-p
-P
--sasl-mechanism
هنگامی که این گزینه مشخص شود، irkerd مذاکره قابلیتهای IRCv3 را انجام داده و در حین برقراری اتصال، قبل از تکمیل ثبتنام، برای احراز هویت SASL تلاش میکند. اگر SASL فعال باشد، پیام سنتی “identify” مربوط به NickServ ارسال نمیشود.
--sasl-username
این گزینه هنگام استفاده از سازوکار “PLAIN” الزامی است. برای “EXTERNAL” نادیده گرفته میشود، زیرا آن سازوکار به جای نام کاربری، از احراز هویت با گواهی TLS کلاینت استفاده میکند.
--sasl-password
این گزینه هنگام استفاده از سازوکار “PLAIN” الزامی است، مگر اینکه --sasl-password-file به کار رود. رمز عبور به عنوان بخشی از تبادل SASL ارسال میشود و از طریق NickServ فرستاده نمیشود.
--sasl-password-file
-t
-i
-V
-h
محدودیتها (LIMITATIONS)
درخواستها از طریق UDP با اجتناب از زمان برقراری اتصال TCP، کمترین زمان تاخیر و بار شبکه را فراهم میآورند؛ هزینه آن این است که تحویل پیام در برابر گم شدن بستهها قابل اعتماد نیست.
یک نمونه irkerd با سوکت درخواستی با دسترسی عمومی میتواند مسدودسازی اسپمهای IRC را دشوار سازد، چرا که به ارسالکنندگان هرزنامه این امکان را میدهد تا در عین پنهان کردن آدرسهای IP خود به آسانی پیام ارسال کنند؛ بنابراین، شیوه بهتر برای استقرار، استفاده در محیطهایی مانند سایتهای میزبان پروژه است که سوکت irkerd بتواند از درون کد قلاب کامیت دیده شود اما در معرض دنیای خارج قرار نگیرد. تجهیز فایروال خود به فهرستهای مسدودی آدرسهای IP شناختهشده در ارسال اسپم، همیشه ایده خوبی است.
نبود هرگونه گزینهای برای تنظیم پورت سرویس عمدی است. اگر فکر میکنید به انجام این کار نیاز دارید، با مشکلی مواجه هستید که بهتر است در فایروال شما حل و فصل شود.
پروتکل IRC محدودیت طول پیام ۵۱۰ بایت دارد؛ مقادیر ویژگی privmsg خود را با دقت مناسب ایجاد کنید.
پروتکل IRC هرگونه متنی را که پس از یک خط جدید درجشده باشد نادیده میگیرد. آگاه باشید که irkerd رشتههای داده حاوی خطوط جدید را به چندین ارسال IRC مجزا تبدیل میکند تا از دور ریخته شدن دادههای پیام جلوگیری شود.
به دلیل وجود یک باگ در تجزیه URL در پایتون، آدرسهای اینترنتی IRC که هم شامل # و هم کلید (key) باشند ممکن است به طور غیرمنتظرهای با شکست مواجه شوند. راه حل موقت این است که علامت # را حذف کنید.
همچنین ببینید (SEE ALSO)
نویسنده (AUTHOR)
Eric S. Raymond <esr@snark.thyrsus.com>. صفحه پروژه را در http://www.catb.org/~esr/irker برای دریافت بهروزرسانیها و سایر منابع، از جمله یک اسکریپت قلاب مخزن قابل نصب، مشاهده کنید.
| 07/26/2026 | irker |