UPSSET.CONF(5) راهنمای NUT UPSSET.CONF(5)

upsset.conf - پیکربندی upsset.cgi در Network UPS Tools و توضیحات عمومی راه‌اندازی کارساز وب برای برنامه‌های CGI در NUT

این فایل تنها یک وظیفه دارد — به شما اجازه می‌دهد تا upsset.cgi(8) را متقاعد کنید که شاخهٔ CGI سیستم شما امن است. این برنامه تا زمانی که این فایل به‌درستی تعریف نشود اجرا نخواهد شد.


نکته

اگر NUT را به‌صورت سفارشی برای ویندوز می‌سازید، گزینهٔ پیکربندی --with-cgi-uri را به یاد داشته باشید. این گزینه به‌طور پیش‌فرض برای ساخت‌های POSIX روی /cgi-bin/nut و برای ساخت‌های ویندوز روی /cgi-nut ساده تنظیم شده است تا ادغام آن‌ها به ترتیب به‌عنوان بخشی از وب‌سایت‌های موجود یا یک وب‌سایت اختصاصی آسان‌تر شود. اگر در استقرار خاص شما برای این مقدار ناهماهنگی وجود دارد، فایل html/header.html را بررسی کنید تا پیوندهای a href مربوط به برنامه‌های CGI را که قرار است در بخش پایینی (تحت عنوان target=mainFrame) باز شوند تنظیم کنید.

•محتویات این فایل باید صرفاً ASCII باشد (کدهای نویسه‌ای که در این محدوده نباشند همراه با پیام هشدار نادیده گرفته می‌شوند).

upsset.cgi(8) به شما اجازه می‌دهد تا ترکیب‌های نام کاربری و گذرواژه را امتحان کنید. هیچ محدودیتی بر نرخ درخواست‌ها (rate limiting) وجود ندارد، چرا که برنامه پس از هر درخواست بسته می‌شود. ماهیت برنامه‌های CGI چنین است.

اعتبارنامه‌ها به‌عنوان بخشی از نشست مرور شما به upsset.cgi ارائه می‌شوند، بنابراین اکیداً توصیه می‌شود HTTPS را روی کارساز وب راه‌اندازی کنید. همچنین ممکن است بخواهید به‌طور کلی از احراز هویت مبتنی بر کارساز وب (خواه نام کاربری و گذرواژه پایه، یا LDAP، یا گواهی کارخواه و غیره) استفاده کنید، یا شنودکننده‌های میزبان مجازی با نام‌های میزبان منتشرنشده («امنیت از طریق ابهام») راه‌اندازی نمایید تا دسترسی به برنامه‌های CGI مربوط به NUT را به‌طور کلی محدود سازید. روش‌های انجام این کار به پیاده‌سازی کارساز وب انتخابی شما بستگی دارد و خارج از حوزهٔ این سند است.

در حالت عادی، مهاجمان نمی‌توانند مستقیماً به کارساز دادهٔ NUT یعنی upsd(8) دسترسی پیدا کنند، زیرا توسط دستورالعمل‌های LISTEN در فایل upsd.conf(5) شما، tcp-wrappers (در صورت در دسترس بودن هنگام ساخت NUT) و به احتمال زیاد تنظیمات دیوار آتش محلی در سیستم‌عاملتان محافظت می‌شود.

upsset روی کارساز وب شما اجرا می‌شود، بنابراین upsd آن را به‌صورت اتصالی از یک میزبان در شبکهٔ داخلی خواهد دید. upsd نمی‌داند که این اتصال در واقع توسط شخصی از بیرون آغاز شده است. به همین دلیل است که باید آن را ایمن کنید.

در آپاچی، می‌توانید از فایل .htaccess استفاده کنید یا دستورالعمل‌ها را در httpd.conf خود قرار دهید. با فرض روش .htaccess برای نسخه‌های قدیمی‌تر آپاچی، چیزی شبیه به این خواهد بود:

<Files upsset.cgi>
        deny from all
        allow from your.network.addresses
</Files>

احتمالاً باید AllowOverride Limit را برای این شاخه در فایل پیکربندی سطح سرور خود نیز تنظیم کنید.

نسخه‌های مدرن آپاچی از نحو دقیق‌تری بهره می‌برند، مانند این:

ScriptAlias /upsstats.cgi /usr/share/nut/cgi/upsstats.cgi
ScriptAlias /upsset.cgi /usr/share/nut/cgi/upsset.cgi
<Directory "/usr/share/nut/cgi">
      Options +Includes +ExecCGI
      AllowOverride Limit
      <RequireAny>
          Require local
          Require ip aa.bb.cc.dd/nn
      </RequireAny>
</Directory>

با ساخت‌های NUT برای ویندوز، کارساز اطلاعات اینترنتی مایکروسافت (IIS) می‌تواند به‌عنوان کارساز وب بومی این پلتفرم برای میزبانی برنامه‌های CGI در NUT مورد استفاده قرار گیرد.


هشدار

مانند سایر جنبه‌های NUT برای ویندوز، این پیکربندی باید آزمایشی در نظر گرفته شود؛ بازخوردها و pull requestها برای بهبود کد و مستنداتی مانند این صفحه بسیار مورد استقبال قرار می‌گیرند.

یکی از جنبه‌هایی که ممکن است امور را ساده یا پیچیده کند این است که این ساخت‌ها با هدف تغییرپذیر بودن مکان نصب (relocatable) طراحی شده‌اند، بنابراین بایگانی (و در نهایت بسته) را می‌توان در هر شاخه‌ای به انتخاب کاربر نهایی باز کرد و «بدون مشکل کار کند»؛ این امر بر استفادهٔ پیش‌فرض از مکان پیکربندی و برنامه نسبت به برنامهٔ NUT در حال اجرای فعلی متکی است، نه مسیرهای کدگذاری‌شدهٔ ثابت مانند ساخت‌های POSIX که برای استقرار یا بسته‌ای خاص سفارشی شده‌اند.

راه‌اندازی گام‌به‌گام زیر روی یک ایستگاه کاری Windows 10 تأیید شده است. نام‌ها و لایه‌بندی مفاهیم اشاره‌شده در سایر نسخه‌های این سیستم‌عامل ممکن است متفاوت باشند. برای جزئیات بیشتر به اسنادی مانند https://learn.microsoft.com/en-us/iis/configuration/system.webserver/cgi یا وبلاگ‌هایی مانند https://dotnetblog.asphostportal.com/5-steps-to-run-cgi-program-on-your-iis/ مراجعه کنید.

در ویندوز، Control Panel را باز کرده و به مسیر «Programs / Programs and Features» و سپس به بخش «Turn Windows features on or off» بروید. به پایین پیمایش کرده و در بخش «Internet Information Services» گزینهٔ مربوطه را علامت بزنید تا مجموعه پیش‌فرض گزینه‌ها (مثلاً برخی سرویس‌ها، برخی ابزارها، بدون FTP) فعال شود. سپس به مسیر «World Wide Web Services / Application Development Features» رفته و «CGI» و «ISAPI Extensions» را انتخاب کنید. ممکن است برای نصب این موارد نیاز به راه‌اندازی مجدد سیستم باشد.


نکته

اگر ویژگی‌ها را بعداً اضافه کنید (پس از اینکه برنامهٔ IIS Manager را اجرا کرده‌اید)، باید برنامهٔ IIS Manager را مجدداً باز کنید، در غیر این صورت برای پیکربندی در رابط کاربری نمایش داده نمی‌شوند.

برنامهٔ IIS Manager را باز کرده و بررسی کنید که پنل اصلی شامل آیکون‌های «CGI» و «ISAPI and CGI Restrictions» باشد.

در پیکربندی IIS، می‌توانید Default Web Site را ویرایش کرده یا یک وب‌سایت جدید ایجاد کنید (نیاز است نام میزبان در DNS یا دست‌کم از طریق فایل محلی %SystemRoot%\system32\drivers\etc\hosts شناخته شود)، و ریشهٔ وب‌سایت را روی محل نصب NUT (شاخه‌ای که از جمله شامل زیرشاخه‌های etc و cgi-bin است) تنظیم نمایید.


نکته

شاید ایمن‌تر باشد که زیرشاخه‌های cgi-bin و html را در یک مکان جداگانه کپی کنید (برای مثال زیر مسیر c:\inetpub\wwwroot یا ریشهٔ وب‌سایت غیرپیش‌فرض)، و سپس یک شاخهٔ etc اختصاصی را با فایل‌های پیکربندی و الگوها برای برنامه‌های CGI پر کنید، یا به نحوی متغیر محیطی NUT_CONFPATH را از کارساز وب صادر نمایید تا به مکانی که «نزدیک» برنامه‌های اجرایی نیست اشاره کند. متناوباً، می‌توانید استفاده از یک ریشهٔ خالی و «شاخه‌های مجازی» (virtual directories) در IIS را بررسی کنید تا صرفاً به cgi-bin و html در محل نصب NUT ارجاع داده شود — و در نتیجه افشای هر فایل دیگری به حداقل برسد.

پس از اینکه وب‌سایت را به هر نحوی تعریف کردید، ریشهٔ آن را در پنل «Connections» انتخاب کرده و روی آیکون «ISAPI and CGI Restrictions» دوبار کلیک کنید. در آنجا از «Actions / Add» مسیرهای کامل برنامه‌های upsimage.cgi.exe، upsset.cgi.exe و upsstats.cgi.exe را (در کل ۳ بار) مشخص کنید، همگی با علامت زدن گزینهٔ «Allow extension path to execute».

بخش «Handler Mappings» را برای زیرشاخهٔ cgi-bin بازبینی کنید تا شامل «CGI-exe» با «Path *.exe» و «State Enabled» باشد (اگر نبود، ورودی را ویرایش کرده، «Request Restrictions» را فشار دهید و در آنجا «Access/Execute» را علامت بزنید).

اگر کارساز (مجازی) به برنامه‌های CGI در NUT اختصاص یافته است، ممکن است بخواهید به آیکون «CGI» نیز رفته و Behavior/Timeout را به چند دقیقه یا حتی چند ثانیه تغییر دهید (و تغییرات را Apply کنید)، تا در صورت بروز هرگونه خرابی در برنامه‌های CGI مربوط به NUT، به یک صفحهٔ خالی خیره نشوید و ندانید که کارساز زنده است یا خیر. مقدار پیش‌فرض IIS برابر با ۱۵ دقیقه است.

•با این حال، ممکن است بخواهید زمان کافی برای یک سری از وقایع مهلت زمانی (timeouts) تابع upscli_tryconnect() در NUT (به‌طور پیش‌فرض ۱۰ ثانیه برای هرکدام) در نظر بگیرید، مثلاً برای دریافت پیام‌های خطا زمانی که کارسازهای دادهٔ NUT از کار افتاده‌اند. در حالی که برای هر بار اجرای کارخواه‌های CGI مربوط به upsset یا upsimage ممکن است یک اتصال وجود داشته باشد، برای upsstats بسته به تعداد دستگاه‌هایی که در hosts.conf(5) با MONITOR تعریف کرده‌اید، ممکن است تعداد اتصالات بیشتری وجود داشته باشد.
•این توصیه ممکن است بعداً در صورت پیاده‌سازی پشتیبانی از «ردیابی» تکمیل دستورات یا تنظیمات ارسال‌شده در سمت دستگاه تغییر کند؛ در حال حاضر کارخواه CGI مربوط به upsset(8) تنها تأییدیهٔ دریافت درخواست توسط کارساز دادهٔ NUT یعنی upsd(8) را دریافت و بازپخش می‌کند.

در شاخهٔ پیکربندی NUT، فایل‌های hosts.conf(5) و upsset.conf را بر حسب نیاز به‌روزرسانی کنید، و (در صورت تمایل پس از اعمال تغییرات) نام فایل‌های upsstats.html.sample و upsstates-single.html.sample را طوری تغییر دهید که پسوند .sample را نداشته باشند.

در نهایت، با فرض پیکربندی پیش‌فرض وب‌سایت، به نشانی http://localhost/html/ بروید؛ صفحه‌ای دو بخشی با یک بنر NUT و پیوندهایی به دو ابزار در بالا، و جدول‌های داده در پایین به شما نمایش داده می‌شود. اگر پایش دستگاه را از قبل راه‌اندازی کرده‌اید، صفحات جزئیات را بررسی کنید: اگر نمایش داده نشدند، مطمئن شوید که فایل‌های upsstats.html و upsstats-single.html نام‌های URI برنامه برای UPSSTATSPATH و UPSIMAGEPATH را با پسوند .exe تعریف کرده باشند.

اگر این موارد برایتان مفهوم نیست، خواندن را متوقف کرده و این برنامه را به حال خود رها کنید. به هر حال این برنامه‌ای نیست که حتماً به آن نیاز داشته باشید.

با فرض اینکه تمام مراحل فوق را انجام داده‌اید و واقعاً کار می‌کند (آن را آزمایش کنید!)، تبریک می‌گوییم — شما یک کارساز وب فقط‌خواندنی دارید که اطلاعات NUT را در قالبی مناسب گزارش می‌دهد.

اگر علاوه بر این می‌خواهید دستگاه‌ها را مدیریت کنید (و باز هم تأکید می‌شود، در صورتی که محدودیت‌های امنیتی مناسب را تنظیم کرده‌اید)، می‌توانید دستورالعمل زیر را به این فایل اضافه کنید تا دسترسی بالقوه خطرناک از طریق کارساز باز شود:

I_HAVE_SECURED_MY_CGI_DIRECTORY

اگر به برنامه دروغ بگویید و شخصی از طریق کارساز وب شما به upsd آسیب بزند، مرا سرزنش نکنید.

upsset.cgi(8)

صفحهٔ خانگی NUT (Network UPS Tools): https://www.networkupstools.org/historic/v2.8.5/

06/21/2026 Network UPS Tools 2.8.5