'\" t
.\" Title: irkerd
.\" Author: [بخش "نویسنده (AUTHOR)" را ببینید]
.\" Generator: DocBook XSL Stylesheets vsnapshot
.\" Date: 07/26/2026
.\" Manual: دستورات (Commands)
.\" Source: irker
.\" Language: Persian
.\"
.TH "IRKERD" "8" "07/26/2026" "irker" "دستورات (Commands)"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "نام (NAME)"
irkerd \- دیمن دروازه IRC
.SH "خلاصه دستور (SYNOPSIS)"
.HP \w'\fBirkerd\fR\ 'u
\fBirkerd\fR [\-c\ \fIca\-file\fR] [\-d\ \fIdebuglevel\fR] [\-e\ \fIcert\-file\fR] [\-l\ \fIlogfile\fR] [\-H\ \fIhost\fR] [\-n\ \fInick\fR] [\-p\ \fIpassword\fR] [\-P\ \fIpassword\-file\fR] [\-\-sasl\-mechanism\ \fIPLAIN|EXTERNAL\fR] [\-\-sasl\-username\ \fIusername\fR] [\-\-sasl\-password\ \fIpassword\fR] [\-\-sasl\-password\-file\ \fIpassword\-file\fR] [\-i\ \fIIRC\-URL\fR] [\-t\ \fItimeout\fR] [\-V] [\-h] [\fImessage\ text\fR]
.SH "توضیحات (DESCRIPTION)"
.PP
.B irkerd
یک کلاینت IRC تخصصی فقطنوشتنی (write\-only) است که برای ارسال پیامهای اعلان به کانالهای IRC در نظر گرفته شده است. کاربرد اصلی مدنظر در زمان طراحی آن، انتشار اعلانها از قلابهای کامیت (commit hooks) در سامانههای کنترل نسخه بوده است.
.PP
مزیت اصلی بازپخش پیامها از طریق این دیمن نسبت به ارسالهای اسکریپتی مجزا از سمت برنامهها این است که میتواند وضعیت اتصال به چندین کانال را حفظ کند، به جای اینکه با ارسال هر پیام، اسپم آزاردهندهای از ورود/خروج (join/leave) در کانال ایجاد نماید.
.PP
.B irkerd
یک سوکت سرور است که برای دریافت بستههای UDP یا TCP روی پورت 6659 به خطوط درخواستی متنی حاوی اشیاء JSON و خاتمهیافته با خط جدید (newline) گوش فرا میدهد. هر شیء JSON باید دارای دو عضو باشد: "to" که مقصد یا فهرستی از مقصدها را مشخص میکند، و "privmsg" که متن پیام را معین میسازد. مثالها:
.sp
.if n \{\
.RS 4
.\}
.nf
{"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"}
.fi
.if n \{\
.RE
.\}
.PP
اگر بخش کانال در URL دارای یکی از کاراکترهای پیشوند
\(lq#\(rq,
\(lq&\(rq, یا
\(lq+\(rq
نباشد، قبل از ارسال یک
\(lq#\(rq
به ابتدای آن اضافه میشود \-
\fIمگر اینکه\fR
بخش کانال دارای پسوند ",isnick" باشد (که این پسوند بدون قید و شرط حذف میشود).
.PP
بخش میزبان در URL میتواند دارای یک پسوند شماره پورت باشد که با دو نقطه جدا شده است، همانطور که در مثال سوم نشان داده شده است؛ در غیر این صورت
.B irkerd
پیامهای متنی ساده را به پورت پیشفرض 6667 سرورهای IRC، و پیامهای دارای رمزنگاری SSL/TLS را به پورت 6697 ارسال میکند.
.PP
رمز عبور برای سرورهای محافظتشده با کلمه عبور میتواند با استفاده از ساختار معمول
\(lq[{username}:{password}@]{host}:{port}\(rq
تعریفشده در RFC 3986 تنظیم شود، همانطور که در مثال پنجم نشان داده شده است. نامهای کاربری غیرخالی در URL جایگزین نام کاربری پیشفرض
\(lqirker\(rq
میشوند.
.PP
زمانی که در URL بخش
\(lqto\(rq
از طرحواره (scheme)
\(lqircs\(rq
استفاده شود (همانطور که در مثالهای چهارم و پنجم نشان داده شده است)، اتصال به سرور IRC از طریق SSL/TLS برقراری میگردد (در مقایسه با اتصال متن ساده با طرحواره
\(lqirc\(rq).
میتوانید با استفاده از
\(lq\-c /etc/ssl/certs/ca\-certificates.crt\(rq
یک فایل CA سفارشی اعلام کنید، اما اگر آن را تنظیم نکنید
.B irkerd
از فایل پیشفرض OpenSSL (با استفاده از
\(lqssl.SSLContext.set_default_verify_paths\(rq
پایتون) استفاده خواهد کرد؛
\(lqssl.match_hostname\(rq
به منظور اطمینان از تعلق گواهی سرور به میزبان مورد نظر و همچنین امضا شدن آن توسط یک CA معتبر استفاده میشود.
.PP
جهت پیوستن به کانالهای محافظتشده با رمز عبور (حالت +k)، بخش کانال در URL میتواند با یک رشته پرسوجو (query string) دنبال شود که کلید کانال را مشخص میکند، به شکل
\(lq?secret\(rq
یا
\(lq?key=secret\(rq، که در آن
\(lqsecret\(rq
کلید کانال است.
.PP
ارسال یک پیام خالی مجاز است و باعث میشود
.B irkerd
به کانالهای هدف بپیوندد یا اتصال خود را با آنها حفظ کند بدون اینکه پیامی منتشر سازد. این ویژگی ممکن است برای اعلان این موضوع که یک نمونه فعال و در حال اجرا است، یا برای پیوستن به یک کانال جهت ثبت لاگ ترافیک آن مفید باشد.
.SH "گزینهها (OPTIONS)"
.PP
.B irkerd
گزینههای زیر را میپذیرد:
.PP
\-d
.RS 4
مقداری را در ادامه دریافت کرده و سطح دیباگ را بر اساس آن تنظیم میکند؛ مقادیر ممکن عبارتند از: \*(Aqcritical\*(Aq, \*(Aqerror\*(Aq, \*(Aqwarning\*(Aq, \*(Aqinfo\*(Aq, \*(Aqdebug\*(Aq. این گزینه عموماً فقط مورد توجه توسعهدهندگان خواهد بود، زیرا لاگها به منظور کمک به ردیابی وضعیت داخلی
.B irkerd
طراحی شدهاند. این لاگهای ردیابی مستقل از لاگهای ترافیک هستند که توسط
\(lq\-l\(rq
کنترل میشوند.
.sp
ثبت لاگ در خروجی خطای استاندارد (اگر
.B irkerd
در پیشزمینه اجرا شود) یا در
\(lq/dev/syslog\(rq
با تسهیلات "daemon" (اگر
.B irkerd
در پسزمینه اجرا شود) انجام خواهد شد. وضعیت پسزمینه بودن
.B irkerd
از طریق مقایسه شناسه گروه پردازش با گروه پردازش مرتبط با ترمینال متصل به خروجی استاندارد (stdout) تعیین میشود (عدم تطابق نشاندهنده پردازشهای پسزمینه است). فرض بر این است که شما
.B irkerd
را در ویندوز یا سیستمعامل دیگری که از
\(lqos.getpgrp\(rq
یا
\(lqtcgetpgrp\(rq
پشتیبانی نمیکند اجرا نمیکنید. ما فرض میکنیم که اگر stdout به یک TTY مرتبط با همان گروه پردازشی
.B irkerd
متصل باشد، شما قصد دارید لاگ را به stderr بفرستید و نه syslog.
.RE
.PP
\-e
.RS 4
یک نام فایل با فرمت pem در ادامه دریافت میکند و از آن برای احراز هویت در سرور IRC استفاده مینماید. برای عملکرد صحیح این قابلیت باید از طریق SSL به سرور IRC متصل شوید. این روش معمولاً با نام
\(lqCertFP\(rq
شناخته میشود.
.RE
.PP
\-l
.RS 4
یک نام فایل در ادامه دریافت میکند و ترافیک را در آن فایل لاگ مینماید. هر خط لاگ شامل سه فیلد جداشده با | است: یک برچسب زمانی عددی در زمان یونیکس، نام کامل دامنه (FQDN) سرور فرستنده، و دادههای پیام.
.RE
.PP
\-H
.RS 4
یک نام میزبان (hostname) در ادامه دریافت میکند و هنگام گوش فرا دادن برای پیامها، به آن آدرس متصل (bind) میشود.
.B irkerd
بهطور پیشفرض به localhost متصل میشود، اما ممکن است بخواهید از آدرس عمومی میزبان خود برای گوش دادن در یک شبکه محلی استفاده کنید. گوش دادن روی یک رابط عمومی توصیه نمیشود، زیرا ارسال هرزنامه به کانالهای IRC را بسیار آسان میسازد.
.RE
.PP
\-n
.RS 4
مقداری در ادامه دریافت کرده و نام مستعار (nick) مورد استفاده را تنظیم میکند. اگر نام مستعار شامل یک عنصر قالببندی عددی (مانند %03d) باشد، در صورت تداخل نام مستعار، برای ایجاد نامهای پشتیبان با پسوند به کار میرود.
.RE
.PP
\-p
.RS 4
مقداری در ادامه دریافت کرده و رمز عبور nickserv مورد استفاده را تنظیم میکند. در صورت ارائه، این رمز عبور به محض دریافت پیام خوشآمدگویی جهت احراز هویت نام مستعار ارسال میشود.
.RE
.PP
\-P
.RS 4
مانند p عمل میکند، اما آرگومان آن به عنوان یک نام فایل تفسیر میشود که کلمه عبور از آن خوانده خواهد شد.
.RE
.PP
\-\-sasl\-mechanism
.RS 4
احراز هویت SASL را فعال کرده و سازوکار مورد استفاده را انتخاب میکند. مقادیر پشتیبانیشده عبارتند از
\(lqPLAIN\(rq
و
\(lqEXTERNAL\(rq.
.sp
هنگامی که این گزینه مشخص شود،
.B irkerd
مذاکره قابلیتهای IRCv3 را انجام داده و در حین برقراری اتصال، قبل از تکمیل ثبتنام، برای احراز هویت SASL تلاش میکند. اگر SASL فعال باشد، پیام سنتی
\(lqidentify\(rq
مربوط به NickServ ارسال نمیشود.
.RE
.PP
\-\-sasl\-username
.RS 4
نام کاربری مورد استفاده برای احراز هویت SASL را مشخص میکند. این معمولاً نام حسابی است که در شبکه IRC ثبت شده است.
.sp
این گزینه هنگام استفاده از سازوکار
\(lqPLAIN\(rq
الزامی است. برای
\(lqEXTERNAL\(rq
نادیده گرفته میشود، زیرا آن سازوکار به جای نام کاربری، از احراز هویت با گواهی TLS کلاینت استفاده میکند.
.RE
.PP
\-\-sasl\-password
.RS 4
رمز عبور مورد استفاده برای احراز هویت SASL را مشخص میکند.
.sp
این گزینه هنگام استفاده از سازوکار
\(lqPLAIN\(rq
الزامی است، مگر اینکه
\fB\-\-sasl\-password\-file\fR
به کار رود. رمز عبور به عنوان بخشی از تبادل SASL ارسال میشود و از طریق NickServ فرستاده نمیشود.
.RE
.PP
\-\-sasl\-password\-file
.RS 4
مانند
\fB\-\-sasl\-password\fR،
اما رمز عبور به جای خط فرمان، از فایل مشخصشده خوانده میشود. این روش به دلایل امنیتی ترجیح داده میشود تا از افشای اطلاعات هویتی از طریق لیست فرآیندها یا تاریخچه پوسته جلوگیری شود.
.RE
.PP
\-t
.RS 4
مقداری در ادامه دریافت کرده و مهلت زمانی (timeout) اتصال را برای باز شدن سوکت سرور تنظیم میکند.
.RE
.PP
\-i
.RS 4
حالت آنی (immediate)، برای اجرا در پیشزمینه. مقداری در ادامه دریافت میکند که به عنوان URL کانال تفسیر میشود. ممکن است یک آرگومان دوم که رشته پیام را مشخص میکند نیز دریافت کند؛ اگر آرگومان دوم وجود نداشته باشد، پیام از ورودی استاندارد خوانده میشود (و ممکن است شامل خطوط جدید باشد). پیام را ارسال کرده و سپس خارج میشود.
.RE
.PP
\-V
.RS 4
نسخه برنامه را در خروجی استاندارد چاپ کرده و خارج میشود.
.RE
.PP
\-h
.RS 4
راهنمای نحوه استفاده را چاپ کرده و خارج میشود.
.RE
.SH "محدودیتها (LIMITATIONS)"
.PP
درخواستها از طریق UDP با اجتناب از زمان برقراری اتصال TCP، کمترین زمان تاخیر و بار شبکه را فراهم میآورند؛ هزینه آن این است که تحویل پیام در برابر گم شدن بستهها قابل اعتماد نیست.
.PP
یک نمونه
.B irkerd
با سوکت درخواستی با دسترسی عمومی میتواند مسدودسازی اسپمهای IRC را دشوار سازد، چرا که به ارسالکنندگان هرزنامه این امکان را میدهد تا در عین پنهان کردن آدرسهای IP خود به آسانی پیام ارسال کنند؛ بنابراین، شیوه بهتر برای استقرار، استفاده در محیطهایی مانند سایتهای میزبان پروژه است که سوکت
.B irkerd
بتواند از درون کد قلاب کامیت دیده شود اما در معرض دنیای خارج قرار نگیرد. تجهیز فایروال خود به فهرستهای مسدودی آدرسهای IP شناختهشده در ارسال اسپم، همیشه ایده خوبی است.
.PP
نبود هرگونه گزینهای برای تنظیم پورت سرویس عمدی است. اگر فکر میکنید به انجام این کار نیاز دارید، با مشکلی مواجه هستید که بهتر است در فایروال شما حل و فصل شود.
.PP
پروتکل IRC محدودیت طول پیام ۵۱۰ بایت دارد؛ مقادیر ویژگی privmsg خود را با دقت مناسب ایجاد کنید.
.PP
پروتکل IRC هرگونه متنی را که پس از یک خط جدید درجشده باشد نادیده میگیرد. آگاه باشید که
.B irkerd
رشتههای داده حاوی خطوط جدید را به چندین ارسال IRC مجزا تبدیل میکند تا از دور ریخته شدن دادههای پیام جلوگیری شود.
.PP
به دلیل وجود یک باگ در تجزیه URL در پایتون، آدرسهای اینترنتی IRC که هم شامل # و هم کلید (key) باشند ممکن است به طور غیرمنتظرهای با شکست مواجه شوند. راه حل موقت این است که علامت # را حذف کنید.
.SH "همچنین ببینید (SEE ALSO)"
.PP
\fBirkerhook\fR(1),
.SH "نویسنده (AUTHOR)"
.PP
Eric S. Raymond
. صفحه پروژه را در
\m[blue]\fBhttp://www.catb.org/~esr/irker\fR\m[]
برای دریافت بهروزرسانیها و سایر منابع، از جمله یک اسکریپت قلاب مخزن قابل نصب، مشاهده کنید.