PULLNEWS(1) InterNetNews Documentation PULLNEWS(1)

pullnews - دریافت خبرها از چندین سرور خبر و ارسال آن‌ها به سروری دیگر

pullnews [-BhnOqRx] [-a hashfeed] [-b fraction] [-c config] [-C width] [-d level] [-f fraction] [-F fakehop] [-g groups] [-G newsgroups] [-H headers] [-k checkpt] [-l logfile] [-L size] [-m header_pats] [-M num] [-N timeout] [-p port] [-P hop_limit] [-Q level] [-r file] [-s to-server[:port][_tlsmode]] [-S max-run] [-t retries] [-T connect-pause] [-w num] [-z article-pause] [-Z group-pause] [from-server ...]

ماژول "Net::NNTP" باید نصب باشد. این ماژول به عنوان بخشی از توزیع libnet در دسترس است و به همراه نسخه‌های جدید Perl ارائه می‌شود. برای نسخه‌های قدیمی‌تر Perl، می‌توانید آن را از http://www.cpan.org دریافت کنید..SH "توضیحات (DESCRIPTION)" دستور pullnews یک فایل پیکربندی به نام pullnews.marks را می‌خواند و به عنوان یک کلاینت خواننده به سرورهای بالادست (upstream) مشخص‌شده در آن متصل می‌شود. این فایل زمانی که pullnews با کاربری تنظیم‌شده در runasuser در inn.conf (که به‌طور پیش‌فرض کاربر "news" است) اجرا شود، در pathdb جستجو می‌شود؛ در غیر این صورت، این فایل در دایرکتوری خانگی کاربری که در حال اجرای آن است جستجو می‌شود.

به‌طور پیش‌فرض، pullnews به تمام سرورهای فهرست‌شده در فایل پیکربندی متصل می‌شود، اما می‌توانید با فهرست کردن سرورها در خط فرمان، pullnews را به سرورهای خاصی محدود کنید: می‌توان فهرستی از نام‌های سرور را که با فاصله از هم جدا شده‌اند مشخص کرد، مانند from-server برای یکی از آن‌ها. برای هر سروری که به آن متصل می‌شود، مقالات را دریافت کرده و از طریق دستورهای IHAVE یا POST به سرور مقصد ارسال (feed) می‌کند. این بدان معناست که سیستمی که pullnews روی آن اجرا می‌شود باید دسترسی ارسال به سرور اخبار مقصد را داشته باشد.

دستور pullnews برای سایت‌های بسیار کوچکی طراحی شده است که نمی‌خواهند درگیر راه‌اندازی ارتباط‌های همتای سنتی (traditional peering) شوند و برای مدیریت خوراک‌های بزرگ در نظر گرفته نشده است.

در صورتی که همتاهای (peers) فعال دارید و نمی‌خواهید مقالاتی را که از سرورهای بالادست دریافت می‌کنید برای آن‌ها منتشر کنید، باید با پرچم -F یک جهش ساختگی (fake hop) به تمام مقالات دریافت‌شده اضافه کنید، و همان جهش ساختگی را در زیربخش استثنای (exclusion sub-field) تمام سایت‌های پیکربندی‌شده در فایل newsfeeds خود که نباید این مقالات را دریافت کنند قرار دهید. برای مثال، با استفاده از "pullnews -F myserverimported";، عبارت "sitename:*:Tm:innfeed!" را برای هر sitename در newsfeeds که نمی‌خواهید مقالات دریافت‌شده به آن ارسال شوند (مانند همتاهای خروجی شما و احتمالاً یک مدخل "inpaths!") به "sitename/myserverimported:*:Tm:innfeed!" تغییر دهید. مدخل‌هایی مانند "ME"، "controlchan!"، "innfeed!" یا "nocem!" نیازی به این استثنا ندارند.

این گزینه یک روش قطعی (deterministic) برای کنترل جریان مقالات و تقسیم یک خوراک است. پارامتر hashfeed باید به صورت "value/mod" یا "start-end/mod" باشد. شناسه Message-ID هر مقاله با استفاده از MD5 درهم‌سازی (هش) می‌شود که منجر به یک هش ۱۲۸ بیتی خواهد شد. سپس ۳۲ بیت پایینی به‌طور پیش‌فرض به عنوان مقدار hashfeed (که یک عدد صحیح است) در نظر گرفته می‌شود. اگر باقیمانده مقدار hashfeed بر "mod" به علاوه یک، برابر با "value" باشد یا بین "start" و "end" قرار گیرد، pullnews مقاله را ارسال خواهد کرد. تمام این اعداد باید عدد صحیح باشند.

برای نمونه:

pullnews -a 1/2      ارسال حدود ۵۰٪ از تمام مقالات.
pullnews -a 2/2      ارسال ۵۰٪ دیگر از تمام مقالات.

مثالی دیگر:

pullnews -a 1-3/10   ارسال حدود ۳۰٪ از تمام مقالات.
pullnews -a 4-5/10   ارسال حدود ۲۰٪ از تمام مقالات.
pullnews -a 6-10/10  ارسال حدود ۵۰٪ از تمام مقالات.

می‌توانید از ساختار گسترش‌یافته‌ای به صورت "value/mod:offset" یا "start-end/mod:offset" استفاده کنید (استفاده از یک زیرخط "_" به جای دونقطه ":" نیز شناخته می‌شود). از آنجا که MD5 یک مقدار خروجی ۱۲۸ بیتی تولید می‌کند، می‌توان مشخص کرد که عدد صحیح ۳۲ بیتی مورد استفاده توسط hashfeed از کدام افست بایتی (byte-offset) آغاز شود. مقدار پیش‌فرض برای "offset" برابر با ":0" است و سیزده مقدار هم‌پوشان از ":0" تا ":12" قابل استفاده هستند. تنها حداکثر چهار مقدار کاملاً مستقل وجود دارد: ":0"، ":4"، ":8" و ":12".

بنابراین، این امکان را فراهم می‌کند که سطح دومی از توزیع قطعی ایجاد شود. در واقع، اگر pullnews مقدار "1/2" را ارسال کند، می‌تواند برای نمونه با استفاده از "1-3/9:4" به تقسیم کردن ادامه دهد. تا چهار سطح از توزیع قطعی می‌تواند مورد استفاده قرار گیرد.

الگوریتم این گزینه با الگوریتم استفاده‌شده توسط Diablo 5.1 و بالاتر سازگار است.

بازگشت به عقب هنگام بازنشانی شماره‌گذاری سرور. نسبتی ("0.0" تا "1.0") از مقالات یک گروه را مشخص می‌کند که در صورت کمتر بودن شماره مقاله سرور از بالاترین شماره موجود برای آن گروه، باید دریافت شوند. هنگامی که fraction برابر "1.0" باشد، تمام مقالات سرور شماره‌گذاری‌مجددشده دریافت می‌شوند. حالت پیش‌فرض عدم انجام هیچ کاری است.
خوراک فقط شامل سرایند است؛ به این معنی که pullnews فقط سرایندهای مقالات را به همراه یک خط خالی ارسال می‌کند. اگر مقاله از قبل فیلد سرایند Bytes را نداشته باشد، آن را اضافه می‌کند و بدنه را تنها در صورتی نگه می‌دارد که مقاله یک مقاله کنترلی باشد.
به‌طور معمول، زمانی که pullnews به عنوان کاربر news اجرا می‌شود، فایل پیکربندی در pullnews.marks در pathdb ذخیره می‌شود، و در غیر این صورت در دایرکتوری خانگی کاربری که در حال اجرای آن است قرار دارد. اگر -c مشخص شود، به جای آن از config به عنوان فایل پیکربندی استفاده خواهد شد. این در صورتی مفید است که pullnews را به صورت خودکار از طریق cron با یک کاربر سیستمی یا به عنوان یک کاربر مستقل، به جای کاربر news اجرا کنید.

برای اطلاع از ساختار این فایل، بخش «فایل پیکربندی (CONFIG FILE)» را در ادامه ببینید.

استفاده از width نویسه در هر خط برای جدول پیشرفت. مقدار پیش‌فرض "50" است.
تنظیم سطح اشکال‌زدایی روی عدد صحیح level (تا حداکثر "4")؛ با افزایش این مقدار، خروجی اشکال‌زدایی بیشتری ثبت خواهد شد. مقدار پیش‌فرض "0" است.
این گزینه نسبت مقالاتی که باید از هر گروه دریافت شوند را به fraction تغییر می‌دهد و باید در بازه "0.0" تا "1.0" باشد ("1.0" مقدار پیش‌فرض است).
افزودن fakehop به عنوان یک میزبان به ابتدای بدنه فیلد سرایند Path در مقالات ارسال‌شده.
مشخص کردن مجموعه‌ای از گروه‌ها برای دریافت. پارامتر groups فهرستی از گروه‌های خبری است که با کاما از هم جدا شده‌اند (فقط کاما، بدون فاصله). هر گروه باید در فایل پیکربندی تعریف شده باشد، و فقط با میزبان‌های راه دور که دارای آن گروه‌ها هستند ارتباط برقرار خواهد شد. توجه داشته باشید که این یک فهرست ساده از گروه‌ها است، نه یک عبارت wildmat، و نویسه‌های عام (wildcards) پشتیبانی نمی‌شوند.
افزودن فهرست گروه‌های جداشده با کاما newsgroups به هر سرور در فایل پیکربندی (همچنین گزینه‌های -g و -w را ببینید).
چاپ پیام راهنمای نحوه استفاده و خروج.
حذف این فیلدهای سرایند مشخص‌شده (فهرستی جداشده با دونقطه) از مقالات ارسال‌شده.
ثبت نقطه بازبینی (ذخیره) فایل پیکربندی به ازای هر checkpt مقاله (پیش‌فرض "0" است، به این معنی که در انتهای نشست انجام می‌شود).
ثبت گزارش پیشرفت/آمار در logfile (پیش‌فرض "stdout" است).
مشخص کردن بیشترین اندازه مجاز مقاله به بایت. پیش‌فرض، بارگیری تمام مقالات بدون در نظر گرفتن اندازه‌شان است. هنگام استفاده از این گزینه، pullnews پیش از تصمیم‌گیری درباره اینکه کدام مقالات را بارگیری کند، ابتدا داده‌های بررسی اجمالی (overview data در صورت موجود بودن) مربوط به هر گروه خبری را جهت پردازش و به‌دست آوردن اندازه‌های مقالات دریافت می‌کند.
ارسال مقاله بر اساس تطابق بدنه فیلد سرایند. آرگومان شامل تعدادی تاپل جداشده با فاصله است (هر تاپل نام فیلد سرایند و عبارت باقاعده است که با دونقطه از هم جدا شده‌اند). برای نمونه:
-m "Hdr1:regexp1 !Hdr2:regexp2 #Hdr3:regexp3 !#Hdr4:regexp4"

مشخص می‌کند که مقاله تنها در صورتی منتقل خواهد شد که بدنه فیلد سرایند "Hdr1" با "regexp1" مطابقت داشته باشد و بدنه فیلد سرایند "Hdr2" با "regexp2" مطابقت نداشته باشد. علاوه بر این، اگر بدنه فیلد سرایند "Hdr3" با "regexp3" مطابقت داشته باشد، آن سرایند حذف می‌شود؛ و اگر بدنه فیلد سرایند "Hdr4" با "regexp4" مطابقت نداشته باشد، آن سرایند حذف می‌شود.

مشخص کردن حداکثر تعداد مقالات (به ازای هر گروه) برای پردازش. حالت پیش‌فرض، پردازش تمام مقالات جدید است. همچنین گزینه -f را ببینید.
کاری جز خواندن مقالات انجام نمی‌دهد -- مقالات را به سرور پایین‌دست ارسال نمی‌کند، هیچ فایل rnews نمی‌نویسد، و فایل پیکربندی را به‌روزرسانی نمی‌کند.
مشخص کردن مدت‌زمان وقفه (timeout)، به صورت timeout ثانیه، هنگام برقراری اتصال NNTP.
استفاده از حالت بهینه‌شده: pullnews پیش از بارگیری مقاله، بررسی می‌کند که آیا مقاله از قبل روی سرور پایین‌دست وجود دارد یا خیر. این حالت ممکن است برای مقالات بسیار حجیم یا پیوند کند با میزبان‌های بالادست مفید باشد.
اتصال به سرور اخبار مقصد روی درگاهی غیر از درگاه پیش‌فرض "119". این گزینه درگاه مورد استفاده برای اتصال به سرورهای اخبار مبدأ را تغییر نمی‌دهد.
محدود کردن ارسال مقاله بر اساس تعداد جهش‌هایی (hops) که تاکنون طی کرده است. جهش‌ها در بدنه فیلد سرایند Path شمرده می‌شوند (hop_count)، و مقاله تنها زمانی ارسال می‌شود که hop_limit به صورت "+num" بوده و hop_count بیشتر از num باشد؛ یا hop_limit به صورت "-num" بوده و hop_count کمتر از num باشد..IP -q 4 نمایش اطلاعات وضعیت کمتر در حین اجرا.
تنظیم سطح سکوت ("-Q 2"; معادل "-q" است). هرچه این مقدار بیشتر باشد، پیام‌های کمتری ثبت می‌شوند. مقدار پیش‌فرض "0" است.
به جای ارسال مقاله‌های دریافت‌شده به یک سرور مقصد، یک فایل دسته‌ای (batch) ایجاد می‌کند که بعداً می‌توان آن را با استفاده از rnews به سرور ارسال کرد. برای اطلاعات بیشتر در مورد قالب فایل دسته‌ای، rnews(1) را ببینید.
رفتار به عنوان یک خواننده (استفاده از دستورهای MODE READER و POST) در ارتباط با سرور پایین‌دستی. در این حالت، ممکن است برخی از پست‌ها به دلیل فیلدهای سرایند تزریق غیرمنتظره، فیلدهای سرایند منسوخ یا قالباً نادرست، یا تاریخی بسیار دور در گذشته، رد شوند. در این صورت ممکن است بخواهید artcutoff را در inn.conf روی "0" تنظیم کرده و از پرچم -H برای حذف فیلدهای سرایند ناخواسته استفاده کنید. حتی با این کار نیز ممکن است تعداد کمی از مقاله‌ها همچنان رد شوند.

حالت پیش‌فرض، رفتار مانند یک تغذیه‌کننده (feeder) و استفاده از دستور IHAVE است. (باید در incoming.conf اتصالات از سوی pullnews را مجاز کنید تا به عنوان تغذیه‌کننده شناخته شود.)

به طور معمول، pullnews مقاله‌هایی را که بازیابی می‌کند به سرور خبری در حال اجرا روی localhost تحویل می‌دهد. برای اتصال به میزبانی دیگر، سرور مورد نظر را با پرچم -s مشخص کنید. همچنین می‌توانید پورت را با همین پرچم تعیین کرده یا از -p استفاده نمایید. پورت پیش‌فرض "119" است.

اتصال به طور پیش‌فرض رمزگذاری‌نشده است. برای مذاکره بر سر لایه رمزگذاری TLS، می‌توانید tlsmode را برای TLS ضمنی روی "TLS" (مذاکره بلافاصله پس از اتصال روی یک پورت اختصاصی) یا برای TLS صریح روی "STARTTLS" (ارسال دستور مناسب قبل از احراز هویت یا تحویل پیام‌ها) تنظیم کنید. مثال‌هایی از نحوه استفاده:

pullnews -s news.server.com
pullnews -s news.server.com_STARTTLS
pullnews -s news.server.com:433_TLS

توجه داشته باشید که همه سرورهای NNTP از TLS برای تحویل مقاله‌ها پشتیبانی نمی‌کنند.

مشخص کردن حداکثر زمان اجرای pullnews با max-run بر حسب ثانیه.
حداکثر تعداد تلاش‌ها (retries) برای برقراری اتصال به یک سرور یا اتصال مجدد در صورت بسته شدن غیرمنتظره سوکت (همچنین -T را ببینید). مقدار پیش‌فرض "0" است.
مکث به مدت connect-pause ثانیه میان تلاش‌های مجدد برای اتصال (همچنین -t را ببینید). مقدار پیش‌فرض "1" است.
تنظیم نشان بالاترین حد دریافت (high water mark یا شماره آخرین مقاله دریافت‌شده) هر گروه روی num. اگر num منفی باشد، به جای آن Current+num محاسبه می‌شود (یعنی دریافت آخرین مقاله‌ها به تعداد num). بنابراین، مقدار "0" برای num همه مقاله‌های موجود در سرور را مجدداً دریافت می‌کند؛ در حالی که مقدار "-0" هیچ مقاله قدیمی را دریافت نکرده و نشان را روی Current (جدیدترین مقاله روی سرور) تنظیم می‌کند.
در صورت استفاده از پرچم -x، فیلد سرایند Xref به هر مقاله‌ای که فاقد آن باشد اضافه می‌شود. این قابلیت به عنوان مثال زمانی مفید است که مقاله‌ها به سرور خبری ارسال می‌شوند که xrefslave در inn.conf آن تنظیم شده است.
مکث به مدت article-pause ثانیه بین دریافت مقاله‌ها. مقدار پیش‌فرض "0" است.
مکث به مدت group-pause ثانیه بین بررسی گروه‌ها. مقدار پیش‌فرض "0" است.

فایل پیکربندی pullnews به بلوک‌هایی تقسیم شده است؛ یک بلوک برای هر سرور دوردست جهت اتصال. یک بلوک با خط میزبان آغاز می‌شود (که نباید هیچ فاصله ابتدایی داشته باشد) و تنها شامل نام میزبان سرور دوردست به همراه پورت و حالت TLS اختیاری است (با همان ساختار معنایی پرچم -s)، و در ادامه می‌تواند اطلاعات احراز هویت (نام کاربری و گذرواژه برای آن سرور) به صورت اختیاری قرار گیرد. توجه داشته باشید که اطلاعات احراز هویت را می‌توان برای سرور پایین‌دستی نیز تعیین کرد (یک خط میزبان برای "localhost" یا نام میزبان مشخص‌شده با پرچم -s می‌تواند بدون مشخص کردن هیچ گروه خبری در فایل پیکربندی برای آن اضافه شود).

به دنبال خط میزبان باید یک یا چند خط گروه خبری قرار گیرد که با فاصله آغاز شده و نام گروه خبری جهت دریافت در ادامه آن می‌آید. در هر خط فقط باید یک گروه خبری درج شود.

pullnews فایل پیکربندی را به‌روزرسانی می‌کند تا شامل زمان آخرین بررسی گروه و بالاترین شماره مقاله‌ای باشد که با موفقیت دریافت و به سرور مقصد منتقل شده است. این ابزار از این داده‌ها استفاده می‌کند تا در اجرای بعدی از انجام کار تکراری جلوگیری نماید.

ساختار دستوری کامل به صورت زیر است:

<host>[:<port>][_<tlsmode>] [<username> <password>]
    <group> [<time> <high>]
    <group> [<time> <high>]

که در آن خط <host> نباید فاصله ابتدایی داشته باشد و خطوط <group> باید دارای فاصله ابتدایی باشند.

یک نمونه فایل پیکربندی معمولی به صورت زیر است:

# Format: group date high
data.pa.vix.com
    rec.bicycles.racing 908086612 783
    rec.humor.funny 908086613 18
    comp.programming.threads
nnrp.vix.com pull sekret
    comp.std.lisp
news.server.com:563_TLS joe password
    news.software.nntp

توجه داشته باشید که اجرای قبلی pullnews جزئیات مربوط به آخرین بارگیری‌های مقاله از دو گروه .*rec را ثبت کرده است. دو گروه .*comp و گروه .*news تازه توسط کاربر اضافه شده‌اند و هنوز بررسی نشده‌اند.

سرور nnrp.vix.com نیازمند احراز هویت است و pullnews از نام کاربری "pull" و گذرواژه "sekret" (بدون هیچ لایه رمزگذاری) استفاده خواهد کرد.

اتصال به news.server.com با TLS ضمنی روی پورت 563 رمزگذاری خواهد شد. گذرواژه joe به صورت متن آشکار ارسال نخواهد شد..SH "فایل‌ها (FILES)"

خود اسکریپت Perl که برای دریافت اخبار از سرورهای بالادست و ارسال آن‌ها به یک سرور اخبار دیگر استفاده می‌شود.
فایل پیکربندی پیش‌فرض. در صورتی که pullnews توسط کاربر news اجرا شود، در pullnews.marks واقع در pathdb ذخیره می‌شود، وگرنه در دایرکتوری خانگی کاربرِ در حال اجرا قرار می‌گیرد.

pullnews توسط James Brister برای INN نوشته شد. مستندات آن توسط Russ Allbery <eagle@eyrie.org> در قالب POD بازنویسی شد.

Geraint A. Edwards ابزار pullnews را تا حد زیادی بهبود بخشید؛ با افزودن حداکثر ۱۶ پرچم شناخته‌شده‌ی جدید، رفع برخی باگ‌ها و ادغام اسکریپت کمکی backupfeed نوشته‌ی Kai Henningsen، و افزودن مجدد ۶ پرچم دیگر.

incoming.conf(5), rnews(1).

2024-05-19 INN 2.7.4