.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.0102 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "NEWSFEEDS 5" .TH NEWSFEEDS 5 2025-05-09 "INN 2.7.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" newsfeeds \- تعیین مقصد ارسال مقاله‌های یوزنت (Usenet) .SH "در یک نگاه (IN A NUTSHELL)" .IX Header "IN A NUTSHELL" فایل \fInewsfeeds\fR تعیین می‌کند که \fBinnd\fR با مقاله‌های پذیرفته‌شدهٔ ورودی چه کار کند. .PP یک فایل مینیمال \fInewsfeeds\fR که یک فید خروجی NNTP از تمام مقاله‌های دریافتی شما را به مقصد \&\f(CW\*(C`news.server.com\*(C'\fR با شناسه مسیر \f(CW\*(C`server\*(C'\fR (همان‌طور که در فیلدهای سرآیند Path ظاهر می‌شود) پیکربندی می‌کند، به صورت زیر است: .PP .Vb 2 \& # خط الزامی، بدون تعریف الگوهای استثنا. \& ME::: \& \& # یک فید بی‌درنگ از طریق innfeed برای همه مقاله‌های شما. \& news.server.com/server\e \& :*\e \& :Tm:innfeed! \& \& # مدخل فید کانال برای innfeed. \& # مقدار "/usr/lib/news/bin" را به مسیر دایرکتوری \& # برنامه innfeed تغییر دهید. \& innfeed!:!*:Tc,Wnm*:/usr/lib/news/bin/innfeed .Ve .PP به منظور یافتن یک فید خارجی، می‌توانید در گروه خبری news.admin.peering درخواست دهید. چندین مدیر سرور خبر مطمئناً پاسخ خواهند داد و با روی خوش یک فید خبری در اختیارتان خواهند گذاشت. .PP مدخل‌های دیگری نیز بسته به نیاز شما می‌توانند به \fInewsfeeds\fR اضافه شوند. برای پرکاربردترین موارد به مثال‌های زیر و همچنین صفحات راهنمای archive(8)، controlchan(8)، news2mail(8)، ninpaths(8) و perl\-nocem(8) مراجعه کنید. .PP اگر سلسله‌مراتب‌ها یا گروه‌های خبری محلی را از فید استثنا می‌کنید، اطمینان حاصل کنید که \&\f(CW\*(C`!control,!control.*\*(C'\fR را اضافه کنید تا مقاله‌های لغو (cancel) یا هر نوع مقاله کنترلی مرتبط با سلسله‌مراتب‌ها یا گروه‌های استثناشده به کارگزار راه دور منتشر نشوند. در این حالت مدخل \fInewsfeeds\fR آن شبیه به این خواهد بود: .PP .Vb 3 \& news.server.com/server\e \& :*,!local.*,@*bina*,!control,!control.*\e \& :Tm:innfeed! .Ve .PP پس از اعمال هرگونه تغییر، دستور \f(CW\*(C`inncheck\*(C'\fR را برای بررسی‌های نحوی پایه اجرا کنید و این فایل پیکربندی را با دستور زیر مجدداً بارگذاری نمایید: .PP .Vb 1 \& ctlinnd reload newsfeeds \*(Aqnew peer\*(Aq .Ve .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" فایل \fIpathetc\fR/newsfeeds نحوهٔ توزیع مقاله‌های ورودی به سایر برنامه‌ها و فایل‌های روی سرور را مشخص می‌کند. این فایل توسط سرور InterNetNews یعنی innd(8) در هنگام راه‌اندازی یا زمانی که توسط ctlinnd(8) دستور داده شود، پردازش و خوانده می‌شود. \fBinnd\fR خودش مقاله‌ها را مستقیماً به سایت‌های راه دور ارسال نمی‌کند، بنابراین \fInewsfeeds\fR مستقیماً تعیین نمی‌کند که مقاله‌ها به کدام سرورهای خبری دوردست فرستاده شوند. در عوض، مشخص می‌کند که چه فایل‌های دسته‌ای (batch) باید ساخته شوند یا چه برنامه‌هایی باید اجرا شوند (و چه اطلاعاتی باید به آن‌ها ارسال گردد)، و سپس این اطلاعات توسط برنامه‌هایی مانند innxmit(8) و innfeed(8) برای ارسال مقاله‌ها به سایت‌های دوردست به کار گرفته می‌شوند. .PP در صورت استفاده به همراه delayer(8) در پیکربندی فید قیفی (funnel) مربوطه، \fBinnfeed\fR حتی می‌تواند فید دارای تأخیر را به همتایان دوردست یا به نمونه محلی دیگری از \fBinnd\fR ارسال کند، به‌ویژه برای آنکه امکان رد هرزنامه‌ها قبل از رسیدن واقعی آن‌ها فراهم گردد. .PP فایل \fInewsfeeds\fR نه تنها برای تنظیم ارسال مقاله‌های پذیرفته‌شده به سایت‌های راه دور، بلکه برای ارسال آن‌ها (یا بخش‌هایی از اطلاعات دربارهٔ آن‌ها) به هر برنامه یا فایل محلی متقاضی آن داده‌ها استفاده می‌شود. برای نمونه، controlchan(8)، دیمونی که پیام‌های کنترلی ورودی را پردازش می‌کند، از طریق \fInewsfeeds\fR اجرا می‌شود، همان‌طور که یک درگاه خبر به ایمیل (news to mail gateway) می‌تواند اجرا شود. .PP این فایل به صورت مجموعه‌ای از خطوط تفسیر می‌شود که طبق قوانین زیر پردازش می‌گردند: اگر خطی با یک بک‌اسلش پایان یابد، بک‌اسلش، کاراکتر خط جدید و هرگونه فاصله خالی در ابتدای خط بعد حذف می‌شوند. این کار تا زمانی که کل خط «منطقی» جمع‌آوری شود تکرار می‌گردد. اگر خط منطقی خالی باشد یا با علامت هش (\f(CW\*(C`#\*(C'\fR) آغاز شود، نادیده گرفته می‌شود. .PP تمام خطوط دیگر به عنوان مدخل‌های فید تفسیر می‌شوند. هر مدخل باید شامل چهار فیلد باشد که با دونقطه (:) از هم جدا شده‌اند؛ دو مورد از فیلدها می‌توانند زیرفیلدهای اختیاری داشته باشند که با اسلش (/) جدا می‌شوند. فیلدها یا زیرفیلدهایی که چندین پارامتر می‌پذیرند باید با کاما جدا شوند. فاصله‌های خالی اضافی می‌توانند باعث بروز مشکل شوند و باید از آن‌ها اجتناب کرد. به جز نام سایت‌ها، بزرگی و کوچکی حروف اهمیت دارد (case-sensitive است). قالب یک مدخل به صورت زیر است: .PP .Vb 4 \& sitename[/exclude,exclude,...]\e \& :pattern,pattern...[/distribution,distribution...]\e \& :flag,flag...\e \& :parameter .Ve .PP هر فیلد در زیر توضیح داده شده است. .PP فیلد \fIsitename\fR نام سایتی است که مقاله خبری می‌تواند به آن ارسال شود. این فیلد برای نوشتن لاگ‌ها و تعیین اینکه آیا یک مقاله باید به یک سایت فوروارد شود یا خیر استفاده می‌شود. («سایت» یک اصطلاح عمومی برای مقصدی از داده‌های newsfeed است؛ این مفهوم اغلب به یک همتای خبری راه دور اشاره دارد، اما الزاماً این‌طور نیست. به عنوان مثال، یک برنامه بایگانی محلی که از طریق \fInewsfeeds\fR اجرا می‌شود نیز یک «سایت» است.) اگر \fIsitename\fR از قبل در بدنه فیلد سرآیند Path مقاله وجود داشته باشد، مقاله به آن سایت فرستاده نخواهد شد. این نام معمولاً همان چیزی است که سایت راه دور برای شناسایی خود در بدنه فیلد سرآیند Path استفاده می‌کند، اما می‌تواند تقریباً هر کلمه‌ای باشد. .PP با این حال مراقب باشید که \fIsitename\fR به طور ناخواسته با یک شناسه مسیر در فیلد سرآیند Path مطابقت پیدا نکند. به همین دلیل، مدخل‌های محلی خاص (مانند بایگانی‌کننده‌ها یا درگاه‌ها) احتمالاً باید با یک علامت تعجب ختم شوند تا اطمینان حاصل شود که نامی یکسان با هیچ سایت واقعی ندارند. به عنوان مثال، \f(CW\*(C`gateway\*(C'\fR نامی بدیهی برای یک مدخل محلی است که مقاله‌ها را به یک لیست پستی فوروارد می‌کند. اگر سایتی با نام \f(CW\*(C`gateway\*(C'\fR مقاله‌ای ارسال کند، زمانی که سایت محلی آن مقاله را دریافت می‌کند، نام را در فیلد سرآیند Path خواهد دید و مقاله را به مدخل \f(CW\*(C`gateway\*(C'\fR خود ارسال نخواهد کرد. از آنجا که \f(CW\*(C`gateway!\*(C'\fR نمی‌تواند به عنوان یک شناسه مسیر جداگانه در فیلد سرآیند Path ظاهر شود (چرا که \f(CW\*(C`!\*(C'\fR جداکننده است)، استفاده از آن برای \fIsitename\fR گزینهٔ بهتری است. .PP (روش دیگر برای جلوگیری از این مشکل استفاده از پرچم \f(CW\*(C`Ap\*(C'\fR است؛ توضیحات زیر را ببینید.) .PP اگر یک مدخل دارای زیرفیلد استثنا (exclusion) باشد، در صورتی که هر یک از مقادیر \fIexclude\fR در بدنه فیلد سرآیند Path ظاهر شوند، مقاله به آن سایت فرستاده نخواهد شد. (گاهی راحت‌تر است که \fIsitename\fR شکل کوتاه‌شده‌ای از نام سایت راه دور باشد، زیرا تمام مقادیر \fIsitename\fR که مقاله به آن‌ها ارسال می‌شود در لاگ نوشته می‌شوند و بنابراین استفاده از نام‌های کوتاه‌تر می‌تواند کارایی سرورهای بزرگ را بهبود بخشد. در این حالت، شناسه‌های مسیر آن سایت‌ها باید به عنوان مدخل‌های \fIexclude\fR داده شوند و پرچم \f(CW\*(C`Ap\*(C'\fR استفاده شود تا \fIsitename\fR کوتاه به طور تصادفی با شناسه‌های مسیر دیگر در فیلدهای سرآیند Path مطابقت پیدا نکند.) .PP یک \fIsitename\fR یکسان می‌تواند بیش از یک بار استفاده شود و اقدام مناسب برای هر مدخلی که باید مقاله را دریافت کند انجام خواهد شد، اما این کار فقط برای فیدهای برنامه‌ای توصیه می‌شود تا از سردرگمی جلوگیری شود. بزرگی و کوچکی حروف در نام سایت‌ها بی‌تأثیر است. .PP الگوی \fIpattern\fR جداشده با کاما مشخص می‌کند که کدام گروه‌ها به سایت فرستاده شوند؛ این الگو برای ایجاد یک «لیست اشتراک» (subscription list) برای سایت تفسیر می‌شود. اشتراک پیش‌فرض دریافت تمام گروه‌های موجود در سرور است. این یک الگوی \fIuwildmat\fR است که از نویسه‌های عمومی مسموم (\f(CW\*(C`@\*(C'\fR) پشتیبانی می‌کند؛ برای جزئیات کامل درباره زبان تطبیق الگو به صفحه راهنمای libinn_uwildmat مراجعه کنید. الگوی \fIpattern\fR با تک‌تک گروه‌های خبری ارائه‌شده توسط سرور تطبیق داده می‌شود و تمام گروه‌هایی که مطابقت داشته باشند به لیست اشتراک سایت اضافه خواهند شد. .PP به طور معمول، اگر هر یک از گروه‌های خبری که مقاله در آن‌ها ارسال شده است در لیست اشتراک آن سایت باشد، مقاله مربوطه (یا اطلاعات آن) به سایت فرستاده می‌شود. اگر یک گروه خبری با الگوی \f(CW\*(C`@\*(C'\fR در \fIpattern\fR مطابقت داشته باشد، نه تنها به لیست اشتراک اضافه نمی‌شود، بلکه هر مقاله‌ای که به صورت اشتراکی در آن گروه خبری ارسال شده باشد (crossposted)، حتی اگر سایر گروه‌های مشترک آن در لیست اشتراک سایت باشند نیز به آن سایت فرستاده نخواهد شد. به این یک الگوی مسموم (poison pattern) گفته می‌شود (زیرا گروه‌های مطابقت‌یافته «مسموم» می‌شوند). .PP به عنوان مثال، برای دریافت تمام گروه‌های comp.*، اما فقط comp.sources.unix در میان گروه‌های خبری sources، می‌توان از \fIpattern\fR زیر استفاده کرد: .PP .Vb 1 \& comp.*,!comp.sources.*,comp.sources.unix .Ve .PP توجه داشته باشید که \f(CW\*(C`.*\*(C'\fR انتهایی الزامی است؛ الگو باید با کل نام گروه خبری مطابقت داشته باشد. عبارت \f(CW\*(C`comp.sources.*\*(C'\fR می‌تواند به صورت \f(CW\*(C`comp.sources*\*(C'\fR نوشته شود و گروه خبری comp.sources (در صورت وجود) و همچنین گروه‌های سلسله‌مراتب comp.sources.* را مستثنا کند، اما دقت کنید که این کار گروه خبری به نام comp.sources\-only را نیز مستثنا می‌کند (در حالی که الگوی بالا آن گروه را به لیست اشتراک سایت اضافه می‌کند زیرا با \f(CW\*(C`comp.*\*(C'\fR مطابقت دارد و با هیچ‌یک از الگوهای دیگر همخوانی ندارد). .PP برای مثالی دیگر، به منظور ارسال alt.* و misc.* به یک سایت معین اما بدون ارسال مقاله‌های فرستاده‌شده به alt.binaries.warez (حتی اگر در سایر گروه‌های alt.* یا misc.* هم اشتراک‌گذاری شده باشند)، می‌توان از الگوی زیر استفاده کرد: .PP .Vb 1 \& alt.*,@alt.binaries.warez,misc.* .Ve .PP با این حال توجه داشته باشید که اگر جای مدخل‌های \f(CW\*(C`alt.*\*(C'\fR و \f(CW\*(C`@alt.binaries.warez\*(C'\fR را جابه‌جا کنید، این الگو معادل \f(CW\*(C`alt.*,misc.*\*(C'\fR خواهد بود، زیرا آخرین الگوی منطبق تعیین می‌کند که آیا یک گروه خبری مطابقت دارد یا خیر، و منطق مسموم‌سازی تنها در صورتی اعمال می‌شود که مدخل مسموم آخرین مدخل منطبق باشد. .PP پیام‌های کنترلی از قوانین انتشاری کمی متفاوت نسبت به مقاله‌های عادی پیروی می‌کنند؛ برای جزئیات به innd(8) مراجعه فرمایید. توجه داشته باشید که اکثر اشتراک‌ها باید به دلیل این قوانین انتشار، عبارت \f(CW\*(C`!junk,!control,!control.*\*(C'\fR را در لیست الگوی خود داشته باشند (و از آنجا که \f(CW\*(C`junk\*(C'\fR یک گروه خبری داخلی ویژه است؛ برای جزئیات بیشتر در مورد کاربرد آن به \fIwanttrash\fR در inn.conf(5) مراجعه کنید) و بهترین راه برای محلی نگه داشتن پیام‌های کنترلی در یک سایت، استفاده از توزیع (distribution) است. .PP یک اشتراک را می‌توان با مشخص کردن توزیع‌هایی (distributions) که سایت باید دریافت کند یا نکند، بیشتر سفارشی‌سازی کرد. پیش‌فرض این است که تمام مقاله‌ها به همه سایت‌هایی که مشترک هر یک از گروه‌های ارسالی آن هستند ارسال شوند، اما اگر مقاله‌ای دارای فیلد سرآیند Distribution باشد و هرگونه \fIdistribution\fR مشخص شده باشد، طبق قوانین زیر بررسی می‌شوند: .IP 1. 4 اگر فیلد سرآیند Distribution با هر یک از مقادیر موجود در زیرفیلد مطابقت داشته باشد، مقاله ارسال می‌شود. .IP 2. 4 اگر یک \fIdistribution\fR با علامت تعجب آغاز شود و با فیلد سرآیند Distribution مطابقت داشته باشد، مقاله ارسال نمی‌شود. .IP 3. 4 اگر فیلد سرآیند Distribution با هیچ \fIdistribution\fR در مدخل سایت مطابقت نداشته باشد و هیچ نفی (علامت تعجب) استفاده نشده باشد، مقاله ارسال نمی‌شود. .IP 4. 4 اگر فیلد سرآیند Distribution با هیچ \fIdistribution\fR در مدخل سایت مطابقت نداشته باشد و یک \fIdistribution\fR با علامت تعجب آغاز شده باشد، مقاله ارسال می‌شود. .PP اگر مقاله‌ای بیش از یک توزیع مشخص داشته باشد، هر کدام طبق قوانین فوق مدیریت می‌شوند. اگر هر یک از توزیع‌های مشخص‌شده نشان دهد که مقاله باید ارسال شود، ارسال می‌گردد؛ اگر هیچ‌کدام نشان ندهد، ارسال نخواهد شد. به عبارت دیگر، قوانین به عنوان یک OR منطقی عمل می‌کنند. .PP تقریباً قطعاً اشتباه است که در یک فید منفرد، توزیع‌هایی که با علامت تعجب شروع می‌شوند در کنار توزیع‌هایی که بدون آن هستند استفاده شوند. .PP توزیع‌ها کلمات متنی هستند، نه الگو؛ مدخل‌هایی مانند \f(CW\*(C`*\*(C'\fR یا \f(CW\*(C`all\*(C'\fR هیچ معنای خاصی ندارند. .PP فیلد \fIflag\fR در بخش «مقادیر پرچم‌ها (FLAG VALUES)» شرح داده شده است. تفسیر فیلد \fIparameter\fR به نوع فید بستگی دارد و در بخش «انواع فید (FEED TYPES)» با جزئیات بیشتر توضیح داده شده است. این فیلد را می‌توان برای برخی انواع فید حذف کرد. .PP سایت با نام \f(CW\*(C`ME\*(C'\fR خاص است. باید دقیقاً یک چنین مدخلی وجود داشته باشد، و باید اولین مدخل در فایل باشد. اگر مدخل \f(CW\*(C`ME\*(C'\fR دارای زیرفیلد استثنا باشد، در صورتی که هر یک از نام‌های مشخص‌شده در آن زیرفیلد در بدنه فیلد سرآیند Path مقاله‌های ورودی ظاهر شود، آن مقاله‌ها کاملاً رد می‌شوند. اگر مدخل \f(CW\*(C`ME\*(C'\fR لیست اشتراک داشته باشد، آن لیست به ابتدای لیست اشتراک تمام مدخل‌های دیگر اضافه (prepend) می‌شود. به عنوان مثال، \f(CW\*(C`*,!control,!control.*,!junk,!foo.*\*(C'\fR می‌تواند برای تعیین لیست اشتراک پیش‌فرض تمام فیدهای دیگر استفاده شود تا پست‌های محلی منتشر نشوند مگر اینکه \f(CW\*(C`foo.*\*(C'\fR صریحاً در لیست اشتراک آن سایت ظاهر شود. این قابلیت تا حدی گیج‌کننده است زیرا اشتراک پیش‌فرض در ابتدا قرار می‌گیرد و می‌تواند توسط الگوهای دیگر بازنویسی شود. .PP اگر مدخل \f(CW\*(C`ME\*(C'\fR زیرفیلد توزیع داشته باشد، تنها مقالاتی که با آن لیست توزیع مطابقت دارند پذیرفته می‌شوند و تمام مقالات دیگر دارای توزیع رد خواهند شد. یک کاربرد رایج برای این کار، قرار دادن چیزی مانند \f(CW\*(C`/!local\*(C'\fR در مدخل \f(CW\*(C`ME\*(C'\fR است تا پست‌های محلی از سایر سایت‌های دارای پیکربندی اشتباه رد شوند. زیرفیلد توزیع \f(CW\*(C`ME\*(C'\fR هیچ تأثیری در پذیرش یا رد مقالاتی که فاقد فیلد سرآیند Distribution هستند ندارد. .PP یک مدخل خالی \f(CW\*(C`ME\*(C'\fR امکان‌پذیر است، که در این صورت هیچ الگوی استثنایی تعریف نخواهد شد. .PP در نهایت، امکان تعریف متغیرها در \fInewsfeeds\fR و استفاده از آن‌ها در ادامه فایل نیز وجود دارد. خطی که با \f(CW\*(C`$\*(C'\fR شروع شود یک متغیر را مقداردهی می‌کند. برای مثال: .PP .Vb 2 \& $LOCALGROUPS=local.*,example.* \& $CONTROLGROUPS=control,control.* .Ve .PP این خط متغیر \f(CW\*(C`LOCALGROUPS\*(C'\fR را به \f(CW\*(C`local.*,example.*\*(C'\fR و متغیر \f(CW\*(C`CONTROLGROUPS\*(C'\fR را به \f(CW\*(C`control,control.*\*(C'\fR تنظیم می‌کند. سپس می‌توان از آن‌ها در سایر بخش‌های فایل استفاده کرد، مانند مدخل سایتی شبیه به: .PP .Vb 1 \& news.example.com:$LOCALGROUPS:Tf,Wnm: .Ve .PP که کاملاً معادل است با: .PP .Vb 1 \& news.example.com:local.*,example.*:Tf,Wnm: .Ve .PP متغیرها صرفاً یک جایگزینی ساده نیستند. اگر کاراکتر \f(CW\*(C`!\*(C'\fR یا \f(CW\*(C`@\*(C'\fR بلافاصله قبل از متغیر بیاید و مقدار متغیر حاوی کاما باشد، آن کاراکتر قبل از هر کاما تکرار خواهد شد. این رفتار که تا حدی عجیب به نظر می‌رسد، به این منظور طراحی شده است تا استفاده از متغیرها برای ساخت الگوهای فید آسان‌تر شود. کاربرد این موضوع زمانی واضح‌تر می‌شود که ببینید خط: .PP .Vb 1 \& news.example.net:*,@$LOCALGROUPS,!$CONTROLGROUPS:Tf,Wnm: .Ve .PP بنابراین معادل است با: .PP .Vb 1 \& news.example.net:*,@local.*,@example.*,!control,!control.*:Tf,Wnm: .Ve .PP که (همان‌طور که در زیر توضیح داده شده است) تمام گروه‌های موجود در LOCALGROUPS$ و مقاله‌های کنترلی ناخواسته را از فید ارسالی به آن سایت مستثنا می‌کند. .SH "مقادیر پرچم‌ها (FLAG VALUES)" .IX Header "FLAG VALUES" پارامتر \fIflags\fR پارامترهای گوناگونی را مشخص می‌کند، از جمله نوع فید، اطلاعاتی که باید به آن ارسال شود، و محدودیت‌های گوناگون در مورد مقالاتی که باید به یک سایت ارسال شوند. این پرچم‌ها را می‌توان به هر ترتیبی مشخص کرد و باید با کاما از یکدیگر جدا شوند. پرچم‌هایی که مقدار می‌پذیرند باید مقدارشان بلافاصله پس از حرف پرچم و بدون فاصله خالی قرار گیرد. پرچم‌های معتبر عبارتند از: .IP "\fB<\fR \fIsize\fR" 4 .IX Item "< size" یک مقاله تنها در صورتی به این سایت ارسال می‌شود که طول آن کمتر از \fIsize\fR بایت باشد. حالت پیش‌فرض بدون محدودیت است. .IP "\fB>\fR \fIsize\fR" 4 .IX Item "> size" یک مقاله تنها در صورتی به این سایت ارسال می‌شود که طول آن بیشتر از \fIsize\fR بایت باشد. حالت پیش‌فرض بدون محدودیت است. .IP "\fBA\fR \fIchecks\fR" 4 .IX Item "A checks" یک مقاله تنها در صورتی به این سایت ارسال می‌شود که شرایط مشخص‌شده در \fIchecks\fR را داشته باشد؛ این شرایط باید از مجموعه زیر انتخاب شوند. \fIchecks\fR در صورت لزوم می‌تواند شامل چندین حرف باشد. توجه داشته باشید که این پرچم روی مقصدهای قیفی (funnel targets) مؤثر نیست؛ باید روی هر مدخل قیف استفاده شود (برای نمونه، \fBAf\fR روی مقصد قیفی \fIinnfeed!\fR بی‌اثر است و بنابراین باید روی تک‌تک سایت‌های خبری قیف‌شده مشخص شود). .RS 4 .IP c 3 .IX Item "c" مستثنا کردن انواع پیام‌های کنترلی. .IP C 3 .IX Item "C" فقط ارسال پیام‌های کنترلی، نه مقاله‌های عادی. .IP d 3 .IX Item "d" فقط ارسال مقالاتی که فیلد سرآیند Distribution دارند. ترکیب با یک مقدار توزیع خاص در بخش \fIdistribution\fR مدخل سایت، می‌تواند برای محدود کردن مقالات ارسالی به یک سایت به مقالات دارای یک توزیع خاص استفاده شود. .IP e 3 .IX Item "e" فقط ارسال مقالاتی که تک‌تک گروه‌های فهرست‌شده در بدنه فیلد سرآیند Newsgroups آن‌ها در فایل \fIactive\fR وجود داشته باشد. .IP f 3 .IX Item "f" عدم ارسال مقالات ردشده توسط فیلترها. این گزینه تنها زمانی کاربرد دارد که مقدار \fIdontrejectfiltered\fR در \fIinn.conf\fR برابر true باشد. با تنظیم این متغیر، این امکان فراهم می‌شود که تمام مقالات پذیرفته شوند اما مقالات فیلترشده به برخی سایت‌ها منتشر نگردند. .IP j 3 .IX Item "j" انتشار مقالات بر اساس فیلد سرآیند Newsgroups آن‌ها. این گزینه تنها زمانی کاربرد دارد که مقدار \fIwanttrash\fR در \fIinn.conf\fR برابر true باشد. با فعال بودن این متغیر، مقالاتی که پذیرفته شده و (به دلیل \fIwanttrash\fR) در گروه \f(CW\*(C`junk\*(C'\fR ذخیره شده‌اند، بر اساس الگوی اشتراک همتایان که روی فیلد سرآیند Newsgroups اعمال می‌شود به آن‌ها فید می‌شوند، گویی که پذیرفته شده و تمام آن گروه‌ها به طور محلی میزبانی شده‌اند. در غیر این صورت، آن‌ها به سایت‌هایی منتشر می‌شوند که گروه خبری \f(CW\*(C`junk\*(C'\fR را دریافت می‌کنند. .Sp این متغیر زمانی مفید است که بخواهید INN را با یک فایل \fIactive\fR مینیمال اجرا کرده و تمام پست‌ها را منتشر کنید. .IP o 3 .IX Item "o" فقط ارسال مقالاتی که داده‌های پیش‌نمایش (overview) برای آن‌ها ذخیره شده است. .IP O 3 .IX Item "O" ارسال مقالاتی به این سایت که فاقد فیلد سرآیند Injection-Info یا X\-Trace هستند، حتی اگر پرچم \f(CW\*(C`O\*(C'\fR نیز داده شده باشد. .IP p 3 .IX Item "p" فقط بررسی استثناها در برابر فیلد سرآیند Path مقالات؛ عدم بررسی نام سایت. این گزینه زمانی مفید است که نام‌های سایت شما با شناسه‌های مسیر در فیلدهای سرآیند Path اضافه‌شده توسط آن سایت‌های دوردست یکسان نباشد، یا برای فیدهای برنامه‌ای که نام سایت اختیاری بوده و ارتباطی با بدنه فیلد سرآیند Path ندارد. .RE .RS 4 .Sp اگر هر دو پرچم \f(CW\*(C`c\*(C'\fR و \f(CW\*(C`C\*(C'\fR داده شوند، آخرین پرچم مشخص‌شده تقدم خواهد داشت. .RE .IP "\fBB\fR \fIhigh\fR/\fIlow\fR" 4 .IX Item "B high/low" اگر به سایتی از طریق یک فایل، کانال یا اکسپلودر (به بخش زیر مراجعه کنید) فید داده شود، سرور معمولاً در سریع‌ترین زمان ممکن شروع به نوشتن اطلاعات می‌کند. فراهم کردن یک بافر ممکن است کارایی سیستم را بهبود بخشد و به روان شدن بار کلی در هنگام ورود حجم زیادی از خبرها کمک کند. مقدار این پرچم باید دو عدد باشد که با اسلش از هم جدا شده‌اند. مقدار \fIhigh\fR نقطه‌ای را مشخص می‌کند که سرور می‌تواند تخلیه بافر ورودی/خروجی فید را آغاز کند، و \fIlow\fR مشخص می‌کند چه زمانی نوشتن متوقف شده و بافرسازی مجدداً آغاز گردد؛ واحدها به بایت هستند. حالت پیش‌فرض عدم انجام بافرسازی و ارسال خروجی به محض امکان‌پذیر بودن است. .IP "\fBC\fR \fIcount\fR" 4 .IX Item "C count" در صورت تعیین این پرچم، یک مقاله تنها در صورتی به این سایت ارسال می‌شود که تعداد گروه‌هایی که مقاله در آن‌ها پست شده، به علاوه مربع (توان دو) تعداد گروه‌هایی که پیگیری‌ها (followups) در آن‌ها ظاهر می‌شوند، بیشتر از \fIcount\fR نباشد. مقدار \f(CW\*(C`30\*(C'\fR یک مقدار مناسب برای این پرچم است که به عنوان مثال موارد زیر را مجاز می‌داند: .RS 4 .IP \(bu 3 ارسال همزمان به حداکثر ۵ گروه زمانی که فیلد followups تنظیم نشده باشد؛ .IP \(bu 3 ارسال همزمان به حداکثر ۲۶ گروه زمانی که فیلد followups روی دو گروه تنظیم شده باشد؛ .IP \(bu 3 ارسال همزمان به حداکثر ۲۹ گروه زمانی که فیلد followups روی یک گروه تنظیم شده باشد؛ .IP \(bu 3 ارسال همزمان به حداکثر ۳۰ گروه زمانی که فیلد followups روی ارسال‌کننده (poster) تنظیم شده باشد. .RE .RS 4 .Sp توجه داشته باشید که اگر مقاله‌ای فاقد فیلد سرآیند Followup-To باشد، تعداد گروه‌هایی که پیگیری‌ها در آن‌ها ظاهر می‌شوند همان تعداد گروه‌هایی است که مقاله در آن‌ها ارسال شده است. .RE .IP "\fBF\fR \fIname\fR" 4 .IX Item "F name" نام فایلی را مشخص می‌کند که در صورت لزوم برای آغاز صف‌بندی (spooling) برای سایت باید استفاده شود (به بخش زیر مراجعه کنید). اگر \fIname\fR یک مسیر مطلق نباشد، نسبت به \fIpathoutgoing\fR در \fIinn.conf\fR در نظر گرفته می‌شود. اگر \fIname\fR یک دایرکتوری باشد، فایل \fItogo\fR در آن دایرکتوری به عنوان نام فایل استفاده خواهد شد. .IP "\fBG\fR \fIcount\fR" 4 .IX Item "G count" در صورت تعیین این پرچم، مقاله تنها در صورتی به این سایت ارسال می‌شود که حداکثر در \fIcount\fR گروه خبری پست شده باشد. این مورد مشکل فیلتر کردن بسیاری از FAQها و همچنین پست‌های ایجاد گروه خبری و اطلاعیه‌های مدیریتی مشابه را دارد. هر یک از پرچم‌های \fBC\fR یا \fBU\fR راه‌حل بهتری هستند. .IP "\fBH\fR \fIcount\fR" 4 .IX Item "H count" در صورت تعیین این پرچم، یک مقاله تنها در صورتی به این سایت ارسال می‌شود که تعداد سایت‌ها در بدنه فیلد سرآیند Path آن حداکثر \fIcount\fR باشد. این پرچم به دلیل تفسیر آزادانه فیلد سرآیند Path تنها باید به عنوان یک راهنمای تقریبی استفاده شود؛ برخی سایت‌ها نام ارسال‌کننده را در بدنه فیلد سرآیند قرار می‌دهند و برخی سایت‌ها که منطقاً یک گام (hop) محسوب می‌شوند به دو گام تبدیل می‌شوند زیرا نام ایستگاه کاری ارسال‌کننده را در بدنه فیلد سرآیند درج می‌کنند. مقدار پیش‌فرض برای \fIcount\fR در صورت عدم تعیین، یک است. (همچنین پرچم \fBO\fR را ببینید که گاهی برای برخی کاربردهای این پرچم مناسب‌تر است.) .IP "\fBI\fR \fIsize\fR" 4 .IX Item "I size" این پرچم اندازه بافر داخلی را برای یک فید فایلی مشخص می‌کند. اگر تعداد فیدهای فایلی بیشتر از حد مجاز سیستم باشد، آن‌ها به صورت داخلی و بر اساس ترتیب کمترین استفاده اخیر (LRU) بافر می‌شوند. با این حال، اگر بافر داخلی بزرگتر از \fIsize\fR بایت شود، داده‌ها در فایل مربوطه نوشته خواهند شد. مقدار پیش‌فرض \f(CW\*(C`16\*(C'\fR\ کیلوبایت است. .IP "\fBN\fR \fIstatus\fR" 4 .IX Item "N status" مقالات ارسالی به این سایت را به مقالاتی در گروه‌های خبری با وضعیت نظارت (moderation) ارائه‌شده توسط \fIstatus\fR محدود می‌کند. اگر \fIstatus\fR برابر \f(CW\*(C`m\*(C'\fR باشد، تنها مقالات موجود در گروه‌های تحت نظارت (moderated) ارسال می‌شوند؛ اگر \fIstatus\fR برابر \f(CW\*(C`u\*(C'\fR باشد، تنها مقالات موجود در گروه‌های بدون نظارت (unmoderated) ارسال خواهند شد. .IP "\fBO\fR \fIoriginator\fR" 4 .IX Item "O originator" در صورت تعیین این پرچم، یک مقاله تنها در صورتی به این سایت ارسال می‌شود که حاوی یک فیلد سرآیند Injection-Info باشد (یا یک فیلد سرآیند X\-Trace در صورتی که سرآیند Injection-Info یافت نشود) و فیلد اول این سرآیند با \fIoriginator\fR مطابقت داشته باشد. عبارت \fIoriginator\fR یک عبارت \fIuwildmat\fR بدون کاما یا لیستی از چنین عباراتی است که با \f(CW\*(C`/\*(C'\fR جدا شده‌اند. اگر اولین کاراکتر الگو با \f(CW\*(C`@\*(C'\fR آغاز شود و بقیه الگو مطابقت داشته باشد، مقاله هرگز ارسال نمی‌شود. یک کاربرد این پرچم، محدود کردن فید به پست‌های تولیدشده محلی با استفاده از یک الگوی \fIoriginator\fR است که با فیلد سرآیند Injection-Info اضافه‌شده توسط سرور محلی مطابقت دارد. .IP "\fBP\fR \fIpriority\fR" 4 .IX Item "P priority" اولویت nice که این کانال یا فید برنامه‌ای باید دریافت کند. این مقدار باید یک عدد مثبت بین ۰ تا ۲۰ باشد و اولویتی است که فرآیند جدید با آن اجرا خواهد شد. این پرچم می‌تواند برای بالا بردن اولویت به حد عادی در صورتی که از پارامتر \fInicekids\fR در \fIinn.conf\fR استفاده می‌کنید، به کار رود. .IP "\fBQ\fR \fIhashfeed\fR" 4 .IX Item "Q hashfeed" عبارت تطبیق \fIhashfeed\fR را برای این سایت مشخص می‌کند. این عبارت باید به فرم \f(CW\*(C`value/mod\*(C'\fR یا \f(CW\*(C`start\-end/mod\*(C'\fR باشد. مقدار Message-ID مقاله با استفاده از MD5 هش می‌شود که یک هش ۱۲۸ بیتی ایجاد می‌کند. ۳۲ بیت پایین‌تر به طور پیش‌فرض به عنوان مقدار hashfeed (که یک عدد صحیح است) در نظر گرفته می‌شود. اگر باقیمانده مقدار hashfeed بر \f(CW\*(C`mod\*(C'\fR به اضافه یک برابر با \f(CW\*(C`value\*(C'\fR باشد یا بین \f(CW\*(C`start\*(C'\fR و \f(CW\*(C`end\*(C'\fR قرار گیرد، مقاله به این سایت فید خواهد شد. تمام این اعداد باید اعداد صحیح باشند. .Sp این روش یک راه قطعی برای کنترل جریان مقالات و تقسیم یک فید است. به عنوان مثال: .Sp .Vb 2 \& Q1/2 حدود ۵۰٪ از تمام مقالات را به این سایت فید می‌کند. \& Q2/2 ۵۰٪ دیگر مقالات را فید می‌کند. .Ve .Sp مثال دیگر با سه سایت: .Sp .Vb 3 \& Q1\-3/10 حدود ۳۰٪ از تمام مقالات را فید می‌کند. \& Q4\-5/10 حدود ۲۰٪ از تمام مقالات را فید می‌کند. \& Q6\-10/10 حدود ۵۰٪ از تمام مقالات را فید می‌کند. .Ve .Sp اگر این پرچم چندین بار مشخص شود، محتویات به صورت منطقی با هم \f(CW\*(C`OR\*(C'\fR می‌شوند (تنها یک تطابق کافی است). .Sp می‌توانید از ساختار گسترش‌یافته‌ای به فرم \f(CW\*(C`value/mod_offset\*(C'\fR یا \f(CW\*(C`start\-end/mod_offset\*(C'\fR استفاده کنید. از آنجا که MD5 یک مقدار خروجی ۱۲۸ بیتی تولید می‌کند، امکان تعیین این موضوع وجود دارد که عدد صحیح ۳۲ بیتی مورد استفاده توسط hashfeed از کدام افست بایتی شروع شود. مقدار پیش‌فرض برای \f(CW\*(C`offset\*(C'\fR برابر \f(CW\*(C`_0\*(C'\fR است و سیزده مقدار هم‌پوشان از \f(CW\*(C`_0\*(C'\fR تا \f(CW\*(C`_12\*(C'\fR می‌توانند استفاده شوند. تنها حداکثر چهار مقدار کاملاً مستقل وجود دارند: \f(CW\*(C`_0\*(C'\fR، \f(CW\*(C`_4\*(C'\fR، \f(CW\*(C`_8\*(C'\fR و \f(CW\*(C`_12\*(C'\fR. .Sp بنابراین، این امکان ایجاد یک سطح دوم از توزیع قطعی را فراهم می‌کند. در واقع، اگر به یک سرور خبری فید \f(CW\*(C`Q1/2\*(C'\fR داده شود، می‌تواند به عنوان مثال به کمک \f(CW\*(C`Q1\-3/9_4\*(C'\fR به تقسیم کردن ادامه دهد. تا چهار سطح از توزیع قطعی قابل استفاده است. .Sp این الگوریتم با الگوریتم مورداستفاده در Diablo\ 5.1 و بالاتر سازگار است. اگر می‌خواهید از روش قدیمی هشینگ سریع مورد استفاده در Diablo قبل از 5.1 استفاده کنید، می‌توانید علامت \f(CW\*(C`@\*(C'\fR را درست بعد از پرچم \fBQ\fR قرار دهید (مثلاً \f(CW\*(C`Q@1\-3/10\*(C'\fR، اما توزیع پیام‌ها با این روش قدیمی چندان بی‌نقص نیست و استفاده از آن توصیه نمی‌شود و نمی‌توان برای آن از افست‌ها استفاده کرد). .IP "\fBS\fR \fIsize\fR" 4 .IX Item "S size" اگر مقدار داده‌های صف‌بندی‌شده برای سایت بیشتر از \fIsize\fR بایت شود، سرور به حالت spooling تغییر وضعیت داده و داده‌ها را به فایل مشخص‌شده با پرچم \fBF\fR، یا در صورت عدم تعیین \fBF\fR به فایل \fIpathoutgoing\fR/\fIsitename\fR ضمیمه می‌کند. عملیات spooling معمولاً تنها برای فیدهای کانال یا اکسپلودر رخ می‌دهد، زمانی که برنامه اجراشده نتواند با ورودی خود همگام بماند. .IP "\fBT\fR \fItype\fR" 4 .IX Item "T type" این پرچم نوع فید را برای این سایت مشخص می‌کند. مقدار \fItype\fR باید حرفی انتخاب‌شده از مجموعه زیر باشد: .Sp .Vb 6 \& c کانال (Channel) \& f فایل (File) \& l فقط ثبت لاگ (Log entry only) \& m قیف (Funnel - هدایت چندین مدخل به یکی) \& p برنامه (Program) \& x اکسپلودر (Exploder) .Ve .Sp هر فید در بخش «انواع فید (FEED TYPES)» در زیر شرح داده شده است. حالت پیش‌فرض \fBTf\fR برای یک فید فایلی است. .IP "\fBU\fR \fIcount\fR" 4 .IX Item "U count" در صورت تعیین این پرچم، یک مقاله تنها در صورتی به این سایت ارسال می‌شود که پیگیری‌ها (followups) به این مقاله حداکثر در \fIcount\fR گروه خبری ارسال شوند. (همچنین برای روش پیچیده‌تر مدیریت این موضوع به \fBC\fR مراجعه کنید.) .IP "\fBW\fR \fIitems\fR" 4 .IX Item "W items" برای فیدهای فایلی، کانالی یا اکسپلودر، این پرچم اطلاعاتی را که باید به این سایت ارسال شوند کنترل می‌کند. برای فید برنامه‌ای، تنها ستاره (\f(CW\*(C`*\*(C'\fR) تأثیر دارد. مقادیر \fIitems\fR باید از مجموعه زیر انتخاب شوند: .RS 4 .IP b 3 .IX Item "b" اندازه مقاله (در فرمت انتقال روی شبکه، به این معنی که با CRLF در پایان هر خط، نقطه‌های دوگانه در ابتدای خطوط، و پایان‌یافته با خطی حاوی یک نقطه تنها) به بایت. .IP e 3 .IX Item "e" زمان انقضای مقاله به ثانیه‌های سپری‌شده از مبدأ زمان (epoch) در صورت وجود فیلد سرآیند Expires، و در غیر این صورت \f(CW\*(C`0\*(C'\fR. .IP f 3 .IX Item "f" توکن API ذخیره‌سازی مقاله (همانند \f(CW\*(C`n\*(C'\fR). با داشتن توکن API ذخیره‌سازی، می‌توان مقاله را با استفاده از sm(8) بازیابی کرد. .IP g 3 .IX Item "g" گروه خبری که مقاله در آن قرار دارد؛ در صورت ارسال همزمان (cross-posted)، اولین گروه از گروه‌هایی که مقاله در آن‌ها پست شده و این سایت آن را دریافت می‌کند. (تفاوت با \f(CW\*(C`G\*(C'\fR در این است که این مورد گروه خبری ارسال‌شده را می‌فرستد حتی اگر یک پیام کنترلی باشد.) .IP h 3 .IX Item "h" کلید هش تاریخچه مقاله (برگرفته از شناسه پیام یا همان Message-ID). .IP m 3 .IX Item "m" شناسه پیام (Message-ID) مقاله. .IP n 3 .IX Item "n" توکن API ذخیره‌سازی مقاله. با داشتن توکن API ذخیره‌سازی، مقاله با استفاده از sm(8) قابل بازیابی است. .IP p 3 .IX Item "p" زمان ارسال مقاله به ثانیه‌های سپری‌شده از مبدأ زمان (epoch). .IP s 3 .IX Item "s" سایتی که مقاله را به سرور فید کرده است. این مقدار بر اساس مقدار \fIlogipaddr\fR در \fIinn.conf\fR، از بدنه فیلد سرآیند Path یا آدرس IP سایت فرستنده گرفته می‌شود. اگر \fIlogipaddr\fR برابر true باشد و آدرس IP برابر \f(CW\*(C`0.0.0.0\*(C'\fR باشد (به این معنی که مقاله از localhost توسط برنامه‌ای مانند rnews(1) فید شده است)، بدنه فیلد سرآیند Path به جای آن ارسال خواهد شد. .IP t 3 .IX Item "t" زمان دریافت مقاله به ثانیه‌های سپری‌شده از مبدأ زمان (epoch). .IP * 3 نام مدخل‌های قیفی مناسب، یا تمام سایت‌هایی که مقاله را دریافت می‌کنند (برای جزئیات بیشتر به بخش زیر مراجعه کنید). .IP D 3 .IX Item "D" بدنه فیلد سرآیند Distribution مقاله، یا \f(CW\*(C`?\*(C'\fR در صورتی که چنین فیلد سرآیندی در مقاله وجود نداشته باشد. .IP G 3 .IX Item "G" محل ذخیره مقاله. اگر گروه خبری ارسال اشتراکی باشد، این مقدار عموماً اولین گروه از گروه‌های ارسالی است که این سایت دریافت می‌کند؛ با این حال، پیام‌های کنترلی در control یا control.* ذخیره می‌شوند (که تفاوت بین این مورد و \f(CW\*(C`g\*(C'\fR است). .IP H 3 .IX Item "H" تمام سرآیندها، به همراه یک خط خالی در ادامه. فیلد سرآیند Xref از قبل حضور خواهد داشت، و یک فیلد سرآیند Bytes حاوی اندازه مقاله به بایت مانند مورد \f(CW\*(C`b\*(C'\fR به سرآیندها اضافه خواهد شد. در صورت استفاده، این باید تنها مورد در لیست باشد. .IP N 3 .IX Item "N" بدنه فیلد سرآیند Newsgroups. .IP P 3 .IX Item "P" بدنه فیلد سرآیند Path. .IP O 3 .IX Item "O" داده‌های پیش‌نمایش (Overview) برای مقاله. .IP R 3 .IX Item "R" اطلاعات مورد نیاز برای تکثیر و همانندسازی (replication) (فیلد سرآیند Xref بدون نام سایت). .RE .RS 4 .Sp می‌توان بیش از یک حرف را مشخص کرد. اگر چندین مورد تعیین شوند، به همان ترتیب مشخص‌شده و با فاصله از یکدیگر نوشته خواهند شد. (\f(CW\*(C`H\*(C'\fR در صورت ارائه باید تنها مورد باشد، اما اگر نباشد، قبل از شروع سرآیندها یک خط جدید ارسال خواهد شد.) حالت پیش‌فرض \fBWn\fR است. .Sp موارد \f(CW\*(C`H\*(C'\fR و \f(CW\*(C`O\*(C'\fR برای استفاده برنامه‌هایی در نظر گرفته شده‌اند که پایگاه‌های داده پیش‌نمایش خبر را ایجاد می‌کنند یا به اطلاعات مشابهی نیاز دارند. پرچم \fBWnteO\fR برای تولید ورودی مورد نیاز برنامه overchan(8) استفاده می‌شود. .Sp ستاره (\f(CW\*(C`*\*(C'\fR) دارای معنای ویژه‌ای است. به طور معمول به لیستی از تمام سایت‌هایی که مقاله جاری را دریافت کرده‌اند، جداشده با فاصله، گسترش می‌یابد. با این حال، اگر این سایت مقصد یک فید قیفی باشد (به عبارت دیگر، اگر توسط سایت‌های دیگری که پرچم \fBTm\fR دارند نام‌گذاری شده باشد)، ستاره به نام فیدهای قیفی که مقاله را دریافت کرده‌اند گسترش می‌یابد. به طور مشابه، اگر سایت یک فید برنامه‌ای باشد، یک ستاره در فیلد \fIparameter\fR به لیست فیدهای قیفی که مقاله را دریافت کرده‌اند گسترش خواهد یافت. یک فید برنامه‌ای نمی‌تواند لیست سایت‌ها را دریافت کند مگر اینکه مقصد سایر فیدهای \fBTm\fR باشد. .RE .SH "انواع فید (FEED TYPES)" .IX Header "FEED TYPES" سرور \fBinnd\fR چهار نوع فید پایه ارائه می‌دهد: لاگ، فایل، برنامه و کانال. اکسپلودر نوع خاصی از کانال است. علاوه بر این، چندین مدخل می‌توانند به یک فید یکسان هدایت شوند؛ این‌ها فیدهای قیفی (funnel feeds) هستند که به مدخلی از یکی از انواع دیگر اشاره می‌کنند. فیدهای قیفی تا حدی در بالا در توضیحات پرچم \fBW*\fR شرح داده شده‌اند. یک فید قیفی هر مقاله‌ای را که به هر یک از فیدهای واردشونده به آن فرستاده شود دریافت می‌کند و معمولاً پرچم \fBW*\fR را در میان پرچم‌های خود قرار می‌دهد تا برنامه پردازش‌کننده آن فید بداند کدام سایت‌ها کدام مقالات را دریافت کرده‌اند. رایج‌ترین فید قیفی innfeed(8) است. .PP توجه داشته باشید که اصطلاح «فید» از نظر فنی نام‌گذاری دقیقی نیست، زیرا سرور خودش مقاله‌ها را منتقل نمی‌کند و تنها داده‌ها را در یک فایل، برنامه یا لاگ می‌نویسد و به برنامه دیگری می‌گوید که مقالات را انتقال دهد. .PP ساده‌ترین فید، فید لاگ (\fBTl\fR) است. به جز ذکر نام در فایل لاگ خبر، یعنی \fIpathlog\fR/news، هیچ داده‌ای نوشته نمی‌شود. این معادل یک مدخل \fBTf\fR است که در \fI/dev/null\fR می‌نویسد، با این تفاوت که هیچ فایلی باز نمی‌شود. تخلیه (flush) یک فید لاگ هیچ کاری انجام نمی‌دهد. .PP فید فایلی (\fBTf\fR) دومین نوع ساده فید است. هنگامی که سایت باید مقاله‌ای را دریافت کند، داده‌های مشخص‌شده در فایلی که نام آن در فیلد \fIparameter\fR آمده است نوشته می‌شود. اگر \fIparameter\fR یک مسیر مطلق نباشد، نسبت به \fIpathoutgoing\fR در \fIinn.conf\fR در نظر گرفته می‌شود. اگر \fIparameter\fR داده نشود، به طور پیش‌فرض \fIpathoutgoing\fR/\fIsitename\fR خواهد بود. نام فایل باید یکتا باشد (دو فید فایلی هرگز نباید به یک فایل یکسان اشاره کنند). .PP فیدهای فایلی برای استفاده توسط برنامه‌های خارجی طراحی شده‌اند که به صورت دوره‌ای داده‌های نوشته‌شده را پردازش می‌کنند. برای همکاری صحیح با \fBinnd\fR، چنین برنامه‌های خارجی ابتدا باید نام فایل دسته‌ای را تغییر دهند و سپس یک دستور تخلیه (flush) برای آن سایت با استفاده از ctlinnd(8) به \fBinnd\fR ارسال کنند. سپس \fBinnd\fR هر داده بافرشده‌ای را می‌نویسد، فایل را می‌بندد و آن را (تحت نام اصلی) مجدداً باز می‌کند، و برنامه می‌تواند با خیال راحت داده‌های موجود در فایل تغییرنام‌یافته را پردازش کند. فیدهای فایلی اغلب در ترکیب با nntpsend(8) استفاده می‌شوند. .PP یک فید برنامه‌ای (\fBTp\fR) به ازای هر مقاله‌ای که سایت دریافت می‌کند، یک برنامه معین را اجرا می‌کند (spawn می‌کند). فیلد \fIparameter\fR باید خط فرمانی باشد که اجرا می‌شود، و باید شامل یک مورد از \f(CW\*(C`%s\*(C'\fR باشد که با توکن API ذخیره‌سازی مقاله جایگزین خواهد شد (مقاله واقعی می‌تواند توسط برنامه با استفاده از sm(8) بازیابی شود). برنامه چیزی در ورودی استاندارد خود دریافت نخواهد کرد (برخلاف نسخه‌های قبلی INN که در آن‌ها مقاله روی stdin به برنامه ارسال می‌شد)، و خروجی استاندارد و خطای استاندارد برنامه روی لاگ خطا (\fIpathlog\fR/errlog) تنظیم خواهد شد. اگر دستور فاقد فرانویسه‌های شل (shell meta-characters) باشد، \fBinnd\fR سعی می‌کند از اجرای یک شل خودداری کند؛ در صورت نیاز به هر دلیلی می‌توان این ویژگی را با افزودن یک سمی‌کلن (;) به انتهای دستور غیرفعال کرد. مسیر کامل برنامه‌ای که باید اجرا شود باید مشخص گردد مگر اینکه دستور توسط شل اجرا شود (و اکیداً توصیه می‌شود که مسیر کامل همیشه صرف‌نظر از این موضوع مشخص شود). .PP اگر یک فید برنامه‌ای مقصد یک قیف باشد، و اگر \fBW*\fR در پرچم‌های سایت ظاهر شود، یک ستاره تنها می‌تواند در \fIparameter\fR وجود داشته باشد و با لیستی جداشده با فاصله از نام‌های سایت‌های فیدکننده به درون قیف که مقاله مربوطه را دریافت کرده‌اند جایگزین خواهد شد. اگر سایت مقصد یک قیف نباشد، یا اگر پرچم \fBW*\fR استفاده نشده باشد، ستاره معنای خاصی ندارد. .PP تخلیه (flush) یک فید برنامه‌ای هیچ کاری انجام نمی‌دهد. .PP برای یک فید کانالی (\fBTc\fR) یا اکسپلودر (\fBTx\fR)، فیلد \fIparameter\fR مجدداً فرآیندی را که باید راه‌اندازی شود نام‌گذاری می‌کند. همانند فیدهای برنامه‌ای، مسیر کامل برنامه باید مشخص شود. با این حال، به جای اجرای برنامه برای هر مقاله، برنامه یک بار اجرا می‌شود و سپس هر زمان که سایت مقاله‌ای دریافت کند، داده‌های مشخص‌شده توسط پرچم‌های سایت در ورودی استاندارد برنامه اجراشده نوشته می‌شود. خروجی استاندارد و خطای استاندارد همانند فیدهای برنامه‌ای تنظیم می‌شوند. اگر فرآیند خارج شود، به طور خودکار دوباره راه‌اندازی خواهد شد. اگر فرآیند نتواند راه‌اندازی شود، سرور ورودی را در فایلی به نام \fIpathoutgoing\fR/\fIsitename\fR صف‌بندی (spool) می‌کند و بعداً مجدداً تلاش خواهد کرد تا فرآیند را راه‌اندازی کند. .PP هنگامی که یک فید کانالی یا اکسپلودر تخلیه (flush) می‌شود، سرور سرِ لوله (pipe) خود به ورودی استاندارد برنامه را می‌بندد. هر دادهٔ معلقی که نوشته نشده باشد صف‌بندی (spool) خواهد شد؛ توضیحات پرچم \fBS\fR در بالا را ببینید. سرور سپس یک نمونه جدید از برنامه را اجرا خواهد کرد. هیچ سیگنالی به برنامه ارسال نمی‌شود؛ این بر عهده برنامه مدیریت‌کننده فید کانالی یا اکسپلودر است که پایان فایل (EOF) را در ورودی استاندارد خود تشخیص دهد و به درستی خارج شود. .PP اکسپلودرها نوع خاصی از فید کانالی هستند. علاوه بر رفتار فید کانالی که در بالا شرح داده شد، می‌توان خطوط فرمان را نیز به اکسپلودرها ارسال کرد. این خطوط با یک علامت تعجب شروع می‌شوند و تفسیر آن‌ها بر عهده اکسپلودر است. دستورات زیر به طور خودکار توسط سرور تولید می‌شوند: .PP .Vb 4 \& !newgroup group \& !rmgroup group \& !flush \& !flush site .Ve .PP این دستورات هر زمان که دستور ctlinnd(8) با همان نام توسط سرور دریافت شود، ارسال می‌گردند. علاوه بر این، دستور \f(CW\*(C`send\*(C'\fR در ctlinnd(8) می‌تواند برای ارسال یک خط فرمان دلخواه به یک اکسپلودر استفاده شود. اکسپلودر اصلی buffchan(8) است. .PP در نهایت، فیدهای \fBTm\fR ورودی یک قیف هستند. فیلد \fIparameter\fR سایت باید نام سایتی را تعیین کند که مقالات را برای تمام ورودی‌های قیف مدیریت می‌کند. .SH "مثال‌ها (EXAMPLES)" .IX Header "EXAMPLES" نحو فایل \fInewsfeeds\fR بسیار پیچیده است زیرا می‌توانید تنوع شگفت‌انگیزی از فیدها را مشخص کنید. سرور INN قادر به تعامل با برنامه‌های بسیار متنوعی است که کارهای گوناگونی با مقالات خبری انجام می‌دهند. با این حال، با فاصله زیاد دو مدخل رایج در \fInewsfeeds\fR، فیدهای فایلی برای nntpsend(8) و فیدهای قیفی برای innfeed(8) هستند. .PP نوع اول شبیه به این است: .PP .Vb 1 \& feed.example.com:*,!control,!control.*,!junk:Tf,Wnm: .Ve .PP که فایلی به نام \fIpathoutgoing\fR/feed.example.com تولید می‌کند که حاوی یک خط به ازای هر مقاله شامل توکن API ذخیره‌سازی، یک فاصله، و شناسه پیام (Message-ID) است. .PP نوع دوم شبیه به این است: .PP .Vb 1 \& feed.example.com:*,!control,!control.*,!junk:Tm:innfeed! .Ve .PP بسیار شبیه است، جز اینکه این ورودیِ یک فید قیفی به نام \f(CW\*(C`innfeed!\*(C'\fR است. همچنین می‌توان این را به صورت زیر نوشت: .PP .Vb 1 \& example/feed.example.com:*,!control,!control.*,!junk:Ap,Tm:innfeed! .Ve .PP (به \fBAp\fR توجه کنید تا مقالاتی که فقط حاوی \f(CW\*(C`example\*(C'\fR در بدنه فیلد سرآیند Path هستند نیز همچنان ارسال شوند)، که کاملاً معادل است به جز اینکه این مورد در \fIpathlog\fR/news به عنوان ارسال به سایت \f(CW\*(C`example\*(C'\fR به جای \f(CW\*(C`feed.example.com\*(C'\fR لاگ خواهد شد. .PP مدخل معمولی فید برای innfeed(8) مثال خوبی از یک فید کانالی است که مقصد فیدهای قیفی گوناگون است (مطمئن شوید که مسیر \fBinnfeed\fR به درستی تنظیم شده باشد): .PP .Vb 1 \& innfeed!:!*:Tc,Wnm*:/innfeed \-y .Ve .PP توجه داشته باشید که \fIpattern\fR برای این فید فقط \f(CW\*(C`!*\*(C'\fR است تا هیچ مقاله‌ای را مستقیماً دریافت نکند. این فید تنها باید مقالاتی را دریافت کند که به یکی از فیدهای قیفی که به آن وارد می‌شوند می‌روند. برنامه innfeed(8) به ازای هر مقاله یک خط در ورودی استاندارد خود دریافت خواهد کرد که حاوی توکن API ذخیره‌سازی، شناسه پیام، و لیستی از سایت‌هایی که باید آن مقاله را دریافت کنند و با فاصله جدا شده‌اند، می‌باشد. .PP در اینجا مثالی تخصصی‌تر از یک فید کانالی آورده شده است: .PP .Vb 3 \& watcher!:*:Tc,Wbnm\e \& :exec awk \*(Aq$1 > 1000000 { print "BIG", $2, $3 }\*(Aq \e \& >> /bigart .Ve .PP این مدخل اندازه بایت هر مقاله را به همراه توکن API ذخیره‌سازی و شناسه پیام دریافت می‌کند و به ازای هر مقاله‌ای که بیش از یک میلیون بایت است، یک خط به فایل لاگ \fIbigart\fR اضافه می‌کند. این در واقع روش عجیبی برای نوشتن این کار است زیرا INN خودش می‌تواند بررسی اندازه را انجام دهد؛ مورد زیر معادل آن است: .PP .Vb 2 \& watcher!:*:Tc,>1000000,Wbnm\e \& :exec awk \*(Aq{ print "BIG", $2, $3}\*(Aq >> /bigart .Ve .PP در اینجا یک درگاه خبر به ایمیل (news to mail gateway) جالب و بسیار ساده آورده شده است که به عنوان نمونه‌ای از یک فید برنامه‌ای پیشرفته نیز عمل می‌کند: .PP .Vb 2 \& mailer!:!*:W*,Tp\e \& :sm %s | innmail \-s "News article" * .Ve .PP به یاد داشته باشید که \f(CW\*(C`%s\*(C'\fR با توکن API ذخیره‌سازی جایگزین می‌شود، بنابراین این دستور مقاله را بازیابی کرده و آن را به \fBinnmail\fR (که امن‌تر از برنامه‌هایی مانند Mail(1) است زیرا بدنه را برای دستورات تیلده پردازش نمی‌کند) با موضوع معین پایپ می‌کند. به استفاده از \f(CW\*(C`*\*(C'\fR در خط فرمان و \fBW*\fR در پرچم‌ها توجه کنید؛ این مدخل طوری طراحی شده است که به عنوان مقصد فیدهای قیفی مانند زیر استفاده شود: .PP .Vb 2 \& peter@example.com:news.software.nntp:Tm:mailer! \& sue@example.com:news.admin.misc:Tm:mailer! .Ve .PP فرض کنید سرور مقاله‌ای دریافت می‌کند که بین news.admin.misc و news.software.nntp به صورت اشتراکی ارسال شده است. سرور متوجه می‌شود که مقاله باید به سایت \f(CW\*(C`peter@example.com\*(C'\fR و سایت \f(CW\*(C`bob@example.com\*(C'\fR فرستاده شود که هر دو به \f(CW\*(C`mailer!\*(C'\fR قیف می‌شوند، بنابراین به سایت \f(CW\*(C`mailer!\*(C'\fR نگاه می‌کند و در نهایت خط فرمان زیر را اجرا می‌نماید: .PP .Vb 2 \& sm @...@ | innmail \-s "News article" \e \& peter@example.com sue@example.com .Ve .PP که مقاله را هم برای Peter و هم برای Sue ایمیل می‌کند. .PP در نهایت، یک مثال بسیار کاربردی دیگر از فید کانالی: مدخل استاندارد برای controlchan(8). مطمئن شوید که مسیر آن به درستی تنظیم شده باشد. .PP .Vb 3 \& controlchan!\e \& :!*,control,control.*,!control.cancel\e \& :AC,Tc,Wnsm:/controlchan .Ve .PP این برنامه تنها اطلاعات مربوط به مقاله‌های ارسال‌شده به یک گروه خبری کنترلی غیر از control.cancel را می‌خواهد، که به دلیل مرتب‌سازی پیام‌های کنترلی شرح‌داده‌شده در innd(8)، تمام پیام‌های کنترلی به جز پیام‌های لغو (cancel) را به آن ارسال می‌کند. برنامه \fBcontrolchan\fR برای هر مقاله، توکن API ذخیره‌سازی، نام سایت فرستنده (برای پردازش پیام‌های کنترلی سنتی ihave و sendme، حتماً درباره \fIlogipaddr\fR در controlchan(8) مطالعه کنید) و شناسه پیام را دریافت می‌کند. .PP برای مثال‌های بسیار دیگر، از جمله مثال‌هایی از مدخل ویژه سایت \f(CW\*(C`ME\*(C'\fR، به فایل نمونه \fInewsfeeds\fR توزیع‌شده با INN مراجعه فرمایید. همچنین برای اطلاعات مربوط به راه‌اندازی مدخل‌های استاندارد newsfeeds که توسط اکثر سایت‌ها استفاده می‌شوند، به اسناد نصب ارائه‌شده با INN مراجعه نمایید. .SH "تاریخچه (HISTORY)" .IX Header "HISTORY" نوشته‌شده توسط Rich $alz برای InterNetNews. بازنویسی و تبدیل به POD توسط Russ Allbery . .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" active(5), buffchan(8), controlchan(8), ctlinnd(8), delayer(8), inn.conf(5), innd(8), innfeed(8), innxmit(8), libinn_uwildmat(3), nntpsend(8), sm(8).