EJABBERD.YML(5) EJABBERD.YML(5)
نام (NAME)
ejabberd.yml - پرونده اصلی پیکربندی کارگزار پیامرسان فوری ejabberd XMPP
خلاصه دستور (SYNOPSIS)
ejabberd.yml
توضیحات (DESCRIPTION)
فایل پیکربندی به زبان YAML نوشته میشود.
هشدار
YAML به تورفتگی (indentation) حساس است، بنابراین مطمئن شوید که
تورفتگیها را رعایت میکنید، در غیر این صورت خطاهای پیکربندی بسیار
گنگ و نامفهومی دریافت خواهید کرد.
از نظر منطقی، گزینههای پیکربندی به ۳ دسته اصلی تقسیم میشوند: Modules
(ماژولها)، Listeners (شنوندگان) و همه چیز دیگری که Top Level (سطح بالا)
نامیده میشود. بنابراین این سند به ۳ فصل اصلی تقسیم شده که هر دسته را
جداگانه توضیح میدهد. محتوای ejabberd.yml معمولاً به این شکل خواهد بود:
hosts:
- example.com
- domain.tld
loglevel: info
...
listen:
-
port: 5222
module: ejabberd_c2s
...
modules:
mod_roster: {}
...
هر خطای پیکربندی (مانند خطای نحوی، گزینه ناشناخته یا مقدار نامعتبر
گزینه) در این مفهوم که ejabberd از بارگذاری کل فایل پیکربندی امتناع
میکند و راهاندازی نخواهد شد یا بارگذاری مجدد پیکربندی را متوقف میکند،
کشنده است.
تمام گزینهها میتوانند در زمان اجرا با اجرای دستور ejabberdctl
reload-config تغییر داده شوند. بارگذاری مجدد پیکربندی اتمی است: یا همه
گزینهها پذیرفته شده و به طور همزمان اعمال میشوند یا پیکربندی جدید بدون
هیچ تأثیری بر پیکربندی در حال اجرا رد میشود.
برخی گزینهها میتوانند فقط برای هاست(های) مجازی خاص با استفاده از
گزینههای host_config یا append_host_config مشخص شوند. چنین گزینههایی
محلی (local) نامیده میشوند. نمونهها عبارتند از modules، auth_method و
default_db. گزینههایی که نمیتوانند به ازای هر هاست مجازی تعریف شوند
سراسری (global) نامیده میشوند. نمونهها عبارتند از loglevel، certfiles و
listen. قرار دادن گزینههای سراسری زیر بخش host_config یا
append_host_config یک اشتباه پیکربندی است - ejabberd از بارگذاری چنین
پیکربندیای امتناع خواهد کرد.
توصیه نمیشود که ejabberd.yml را از ابتدا بنویسید. در عوض بهتر است از
فایل پیکربندی "پیشفرض" موجود در
https://github.com/processone/ejabberd/blob/26.07/ejabberd.yml.example
شروع کنید. پس از اینکه ejabberd را راهاندازی کردید، میتوانید شروع به
تغییر گزینههای پیکربندی برای رفع نیازهای خود کنید.
توجه داشته باشید که این سند در نظر گرفته شده تا توضیحات جامعی از تمام
گزینههای پیکربندی ارائه دهد که میتوان برای درک معنای یک گزینه خاص، قالب
و مقادیر ممکن آن به آن مراجعه کرد. درک نحوه پیکربندی ejabberd تنها با
خواندن این سند بسیار دشوار خواهد بود - برای این منظور به خواننده توصیه
میشود راهنمای پیکربندی آنلاین موجود در
https://docs.ejabberd.im/admin/configuration را مطالعه کند.
گزینههای سطح بالا (TOP LEVEL OPTIONS)
این بخش گزینههای سطح بالای ejabberd 26.07 را توضیح میدهد. گزینههایی که
در این نسخه تغییر کردهاند با 🟠 علامتگذاری شدهاند.
access_rules: {AccessName: {allow|deny: ACLName|ACLDefinition}}
این گزینه basic.md#access-rules|Access Rules (قوانین دسترسی) را
تعریف میکند. به هر قانون دسترسی یک نام اختصاص داده میشود که میتوان
از سایر بخشهای فایل پیکربندی (عمدتاً از گزینههای access ماژولهای
ejabberd) به آن ارجاع داد. هر تعریف قانون ممکن است تعداد دلخواهی
بخش allow یا deny داشته باشد، و هر بخش میتواند هر تعداد قانون ACL
داشته باشد (به گزینه acl مراجعه کنید). به طور پیشفرض هیچ قانون
دسترسیای تعریف نشده است.
مثال:
access_rules:
configure:
allow: admin
something:
deny: someone
allow: all
s2s_banned:
deny: problematic_hosts
deny: banned_forever
deny:
ip: 222.111.222.111/32
deny:
ip: 111.222.111.222/32
allow: all
xmlrpc_access:
allow:
user: peter@example.com
allow:
user: ivone@example.com
allow:
user: bot@example.com
ip: 10.0.0.0/24
acl: {ACLName: {ACLType: ACLValue}}
این گزینه ../configuration/basic.md#acl|access control lists
(لیستهای کنترل دسترسی) را تعریف میکند: مجموعههای نامگذاریشدهای از
قوانین که برای تطبیق با اهداف مختلف (مانند JID یا آدرس IP) استفاده
میشوند. هر مجموعه از قوانین دارای نام ACLName است: میتواند هر
رشتهای باشد به جز all یا none (آنها نامهای از پیش تعریفشده برای
قوانینی هستند که به ترتیب با همه چیز یا هیچ چیز تطبیق دارند). نام
ACLName میتواند از سایر بخشهای فایل پیکربندی، برای مثال در گزینه
access_rules، ارجاع داده شود. قوانین ACLName توسط نگاشت {ACLType:
ACLValue} نمایش داده میشوند. اینها میتوانند یکی از موارد زیر باشند:
ip: Network
قانون با هر آدرس IP از Network تطبیق دارد.
node_glob: Pattern
مانند node_regexp است، اما تطبیق بر اساس Pattern مشخصشده طبق
قوانین استفادهشده توسط شل Unix انجام میشود.
node_regexp: user_regexp@server_regexp
قانون با هر JID که بخش node آن با عبارت منظم user_regexp و بخش
server آن با عبارت منظم server_regexp تطبیق دارد، مطابقت دارد.
resource: Resource
قانون با هر JID که دارای resource برابر Resource است تطبیق
دارد.
resource_glob: Pattern
مانند resource_regexp است، اما تطبیق بر اساس Pattern مشخصشده
طبق قوانین استفادهشده توسط شل Unix انجام میشود.
resource_regexp: Regexp
قانون با هر JID که resource آن با عبارت منظم Regexp تطبیق دارد،
مطابقت دارد.
server: Server
قانون با هر JID از سرور Server تطبیق دارد. مقدار Server باید یک
نام میزبان معتبر یا آدرس IP باشد.
server_glob: Pattern
مانند server_regexp است، اما تطبیق بر اساس Pattern مشخصشده طبق
قوانین استفادهشده توسط شل Unix انجام میشود.
server_regexp: Regexp
قانون با هر JID از سروری که با عبارت منظم Regexp تطبیق دارد،
مطابقت دارد.
user: Username
اگر Username به شکل "user@server" باشد، قانون یک JID را با این
مقدار تطبیق میدهد. در غیر این صورت، اگر Username به شکل "user"
باشد، قانون با هر JID که Username را در بخش node دارد تطبیق
دارد، مشروط بر اینکه بخش server این JID هر هاست مجازیای باشد که
توسط ejabberd سرویسدهی میشود.
user_glob: Pattern
مانند user_regexp است، اما تطبیق بر اساس Pattern مشخصشده طبق
قوانین استفادهشده توسط شل Unix انجام میشود.
user_regexp: Regexp
اگر Regexp به شکل "regexp@server" باشد، قانون با هر JID که بخش
node آن با عبارت منظم "regexp" تطبیق دارد و بخش server آن برابر
"server" است، مطابقت دارد. اگر Regexp به شکل "regexp" باشد،
قانون با هر JID که بخش node آن با عبارت منظم "regexp" تطبیق
دارد و بخش server آن هر هاست مجازیای باشد که توسط ejabberd
سرویسدهی میشود، مطابقت دارد.
acme: Options
پیکربندی basic.md#acme|ACME، برای دریافت خودکار گواهیهای SSL برای
دامنههای سرویسدهیشده توسط ejabberd، که به این معناست که درخواستها و
تجدید گواهیها در حالت کاملاً خودکار به یک سرور CA (معروف به "سرور
ACME") ارسال میشوند. Options (گزینهها) عبارتند از:
auto: true | false
آیا به طور خودکار برای تمام دامنههای پیکربندیشده (که هنوز گواهی
ندارند) در هنگام راهاندازی سرور یا بارگذاری مجدد پیکربندی،
گواهی درخواست شود. مقدار پیشفرض true است.
ca_url: URL
آدرس URL دایرکتوری ACME که به عنوان نقطه ورود برای سرور ACME
استفاده میشود. مقدار پیشفرض
https://acme-v02.api.letsencrypt.org/directory است - آدرس URL
دایرکتوری مرجع صدور گواهی Let’s Encrypt.
cert_type: rsa | ec
نوع کلید گواهی. مقادیر موجود ec و rsa به ترتیب برای گواهیهای EC
و RSA هستند. برای سازگاری با کلاینتها و سرورهای قدیمی بهتر است
گواهیهای RSA داشته باشید، بنابراین مقدار پیشفرض rsa است.
contact: [Contact, ...]
فهرستی از آدرسهای تماس (معمولاً ایمیلها) که سرور ACME در صورت
بروز مشکل اطلاعیههایی به آنها ارسال میکند. مقدار Contact باید
به شکل "scheme:address" باشد (مثلاً "mailto:user@domain.tld").
مقدار پیشفرض یک لیست خالی است که به این معنی است که سرور ACME
هیچ اطلاعیهای ارسال نخواهد کرد.
مثال:
acme:
ca_url: https://acme-v02.api.letsencrypt.org/directory
contact:
- mailto:admin@domain.tld
- mailto:bot@domain.tld
auto: true
cert_type: rsa
allow_contrib_modules: true | false
آیا نصب ماژولهای شخص ثالث مجاز است یا خیر. به بخش مستندات
../../admin/guide/modules.md#ejabberd-modules|ejabberd-modules
مراجعه کنید. مقدار پیشفرض true است.
allow_multiple_connections: true | false
این گزینه فقط زمانی استفاده میشود که حالت ناشناس فعال باشد. تنظیم
آن بر روی true به این معنی است که در صورت استفاده از resource های
مختلف برای اتصال، همان نام کاربری میتواند چندین بار در حالت ورود
ناشناس استفاده شود. این گزینه فقط در موارد بسیار خاص مفید است.
مقدار پیشفرض false است.
anonymous_protocol: login_anon | sasl_anon | both
تعریف میکند که از کدام پروتکل
authentication.md#anonymous-login-and-sasl-anonymous|anonymous
(ناشناس) استفاده خواهد شد:
• login_anon به این معناست که از روش ورود ناشناس استفاده خواهد
شد.
• sasl_anon به این معناست که از روش SASL Anonymous استفاده خواهد
شد.
• both به این معنی است که هم SASL Anonymous و هم ورود ناشناس فعال
هستند.
مقدار پیشفرض sasl_anon است.
api_permissions: [Permission, ...]
تعریف مجوزهای دسترسی به API. لطفاً به مستندات ejabberd → برای
توسعهدهندگان → ejabberd ReST API →
../../developer/ejabberd-api/permissions.md|API Permissions مراجعه
کنید.
append_host_config: {Host: Options}
افزودن چند گزینه خاص به یک
../configuration/basic.md#virtual-hosting|میزبان مجازی مشخص.
auth_cache_life_time: timeout()
مشابه cache_life_time، اما فقط برای کش احراز هویت اعمال میشود. در
صورتی که تنظیم نشده باشد، مقدار از cache_life_time استفاده خواهد
شد.
auth_cache_missed: true | false
مشابه cache_missed، اما فقط برای کش احراز هویت اعمال میشود. در
صورتی که تنظیم نشده باشد، مقدار از cache_missed استفاده خواهد شد.
auth_cache_size: pos_integer() | infinity
مشابه cache_size، اما فقط برای کش احراز هویت اعمال میشود. در صورتی
که تنظیم نشده باشد، مقدار از cache_size استفاده خواهد شد.
auth_external_user_exists_check: true | false
توجه درباره این گزینه: در نسخه 23.10 اضافه شده است. بررسی تکمیلی
برای وجود کاربر بر اساس دادههای mod_last، برای روشهای احراز هویتی
که راهی مطمئن برای تشخیص وجود کاربر ندارند (مانند احراز هویت مبتنی
بر jwt و گواهینامه). این قابلیت در پردازش پیامهای آفلاین برای آن
کاربران کمک میکند. مقدار پیشفرض true است.
auth_method: [mnesia | sql | anonymous | external | jwt | ldap | pam,
...]
فهرستی از روشهای authentication.md|احراز هویت برای استفاده. اگر چند
روش تعریف شده باشند، احراز هویت زمانی موفق تلقی میشود که حداقل یکی
از روشها با موفقیت انجام شود. مقدار پیشفرض [mnesia] است.
auth_opts: [Option, ...]
این گزینه توسط ماژول مشارکتی ejabberd_auth_http که میتوان از مخزن
گیت ../../admin/guide/modules.md#ejabberd-contrib|ejabberd-contrib
نصب کرد، مورد استفاده قرار میگیرد. برای جزئیات به فایل README آن
ماژول مراجعه کنید.
auth_password_format: plain | scram
توجه درباره این گزینه: در نسخه 20.01 بهبود یافته است. این گزینه
تعیین میکند که رمزهای عبور کاربران به چه شکلی ذخیره شوند، به صورت
متن ساده یا در قالب authentication.md#scram|SCRAM:
• plain: رمز عبور به صورت متن ساده در پایگاه داده ذخیره میشود.
این روش خطرناک است زیرا در صورت نفوذ به پایگاه داده، رمزها قابل
خواندن هستند. این مقدار پیشفرض است. این قالب به کلاینتها اجازه
میدهد با استفاده از: Jabber Non-SASL قدیمی (XEP-0078)، SASL
PLAIN، SASL DIGEST-MD5 و SASL SCRAM-SHA-1/256/512(-PLUS) احراز
هویت کنند.
• scram: رمز عبور ذخیره نمیشود، فقط اطلاعاتی که برای تأیید هش
ارائهشده توسط کلاینت لازم است ذخیره میشود. بازیابی رمز اصلی از
اطلاعات ذخیرهشده غیرممکن است؛ به همین دلیل، پس از تنظیم این
مقدار، دیگر نمیتوان آن را به plain تغییر داد. این قالب به
کلاینتها اجازه میدهد با استفاده از: SASL PLAIN و SASL SCRAM-
SHA-1/256/512(-PLUS) احراز هویت کنند. نوع SCRAM به گزینه
auth_scram_hash بستگی دارد.
مقدار پیشفرض plain است.
auth_password_types_hidden_in_sasl1: [plain | scram_sha1 | scram_sha256
| scram_sha512]
توجه درباره این گزینه: در نسخه 25.07 اضافه شده است. فهرست انواع رمز
عبوری که نباید در احراز هویت SASL1 ارائه شوند. از آنجا که SASL1،
برخلاف SASL2، نمیتواند فهرست مکانیزمهای موجود را متناسب با هر کاربر
سفارشیسازی کند، ممکن است مکانیزمهای پیشنهادشده با رمز ذخیرهشده
سازگار نباشند، بهویژه اگر نوع رمز جدیدی اخیراً اضافه شده باشد. این
گزینه امکان غیرفعالسازی ارائه برخی مکانیزمها در SASL1 را فراهم
میکند، تا زمانی که نوع رمز جدید برای همه کاربران در دسترس باشد.
auth_scram_hash: sha | sha256 | sha512
الگوریتم هش که باید برای ذخیره رمز عبور در قالب
authentication.md#scram|SCRAM استفاده شود. اگر از قبل رمزهایی با
الگوریتم دیگری تولید شدهاند، این مقدار را تغییر ندهید، زیرا کاربران
دارای آن رمزها قادر به احراز هویت نخواهند بود. مقدار پیشفرض sha
است.
auth_stored_password_types: [plain | scram_sha1 | scram_sha256 |
scram_sha512]
توجه درباره این گزینه: در نسخه 25.03 اضافه شده است. فهرست انواع رمز
عبوری که باید بهطور همزمان برای هر کاربر در پایگاه داده ذخیره شوند.
هنگامی که کاربر رمز عبور حساب خود را تعیین میکند، پایگاه داده
بهروزرسانی میشود تا رمز را در قالبهای سازگار با هر نوع فهرستشده
ذخیره کند. این قابلیت میتواند برای مهاجرت رمزهای کاربران به قالب
امنتر استفاده شود. اگر این گزینه تنظیم شده باشد، مقادیر تنظیمشده در
گزینههای auth_scram_hash و auth_password_format را نادیده میگیرد.
مقدار پیشفرض []. است.
auth_use_cache: true | false
مشابه use_cache، اما فقط برای کش احراز هویت اعمال میشود. در صورتی
که تنظیم نشده باشد، مقدار از use_cache استفاده خواهد شد.
c2s_cafile: Path
مسیر کامل به فایلی که حاوی یک یا چند گواهی CA در قالب PEM است. تمام
گواهیهای کلاینت باید توسط یکی از این گواهیهای CA ریشه امضا شده
باشند و JID(های) متناظر را در فیلد subjectAltName داشته باشند.
مقدار پیشفرضی وجود ندارد.
میتوانید از host_config برای تعیین این گزینه به ازای هر میزبان مجازی
استفاده کنید.
برای تنظیم یک فایل خاص به ازای هر شنونده، از گزینه
listen-options.md#cafile|cafile شنونده استفاده کنید. توجه داشته باشید
که c2s_cafile گزینه cafile شنونده را نادیده میگیرد.
c2s_ciphers: [Cipher, ...]
فهرستی از رمزهای OpenSSL برای استفاده در اتصالات c2s. مقدار پیشفرض
در مثال زیر نشان داده شده است:
مثال:
c2s_ciphers:
- HIGH
- "!aNULL"
- "!eNULL"
- "!3DES"
- "@STRENGTH"
c2s_dhfile: Path
مسیر کامل به فایلی که حاوی پارامترهای DH سفارشی برای استفاده در
اتصالات c2s است. چنین فایلی میتواند با دستور "openssl dhparam -out
dh.pem 2048" ساخته شود. اگر این گزینه مشخص نشده باشد، گروه MODP
2048 بیتی با زیرگروه مرتبه اول 256 بیتی طبق تعریف RFC5114 بخش 2.3
استفاده خواهد شد.
c2s_protocol_options: [Option, ...]
فهرست گزینههای کلی SSL برای استفاده در اتصالات c2s. این گزینهها به
set_options() در OpenSSL نگاشت میشوند. مقدار پیشفرض در مثال زیر
نشان داده شده است:
مثال:
c2s_protocol_options:
- no_sslv3
- cipher_server_preference
- no_compression
c2s_tls_compression: true | false
آیا فشردهسازی TLS برای اتصالات c2s فعال یا غیرفعال شود. مقدار
پیشفرض false است.
ca_file: Path
مسیر به فایل گواهیهای ریشه CA. بهطور پیشفرض در صورت امکان از فایل
تعریفشده توسط سیستم استفاده میشود.
برای اتصالات سرور، این گزینه ca_file توسط گزینه s2s_cafile نادیده گرفته
میشود.
cache_life_time: timeout()
مدت زمان نگهداری یک آیتم در کش. پس از انقضا، آیتم متناظر از کش پاک
میشود. مقدار پیشفرض 1 hour (یک ساعت) است. چند ماژول گزینه مشابهی
دارند؛ و برخی بخشهای هستهای ejabberd نیز از گزینههای مشابهی
پشتیبانی میکنند، ببینید: auth_cache_life_time،
oauth_cache_life_time، router_cache_life_time، و
sm_cache_life_time.
cache_missed: true | false
آیا جستجوهای ناموفق کش شوند یا خیر. هنگامی که سعی میشود مقداری در
پایگاه داده پیدا شود و یافت نشود و این گزینه روی true تنظیم باشد،
این تلاش کش میشود و تا انقضای کش (ببینید cache_life_time) هیچ تلاشی
مجدد انجام نخواهد شد. معمولاً نیازی به تغییر این گزینه نیست. مقدار
پیشفرض true است. چند ماژول گزینه مشابهی دارند؛ و برخی بخشهای هستهای
ejabberd نیز از گزینههای مشابهی پشتیبانی میکنند، ببینید:
auth_cache_missed، oauth_cache_missed، router_cache_missed، و
sm_cache_missed.
cache_size: pos_integer() | infinity
حداکثر تعداد آیتمها (نه حافظه!) در کش. بهعنوان یک قاعده کلی، برای
همه جداول بهجز فهرست مخاطبان، باید این مقدار را برابر با حداکثر
تعداد کاربران آنلاین مورد انتظار تنظیم کنید. برای جدول مخاطبان این
عدد را در حدود ۲۰ ضرب کنید. اگر اندازه کش به این آستانه برسد، بهطور
کامل پاک میشود، یعنی تمام آیتمها حذف میشوند و هشدار مربوطه ثبت
میگردد. باید از پاکسازی مکرر کش خودداری کنید، زیرا عملکرد را کاهش
میدهد. مقدار پیشفرض 1000 است. چند ماژول گزینه مشابهی دارند؛ و برخی
بخشهای هستهای ejabberd نیز از گزینههای مشابهی پشتیبانی میکنند،
ببینید: auth_cache_size، oauth_cache_size، router_cache_size، و
sm_cache_size.
captcha_cmd: Path | ModuleName
توجه درباره این گزینه: در نسخه 23.01 بهبود یافته است. مسیر کامل به
اسکریپتی که تصاویر basic.md#captcha|CAPTCHA تولید میکند. کلیدواژه
@VERSION@ با شماره نسخه ejabberd در قالب XX.YY جایگزین میشود.
کلیدواژه @SEMVER@ با شماره نسخه ejabberd در قالب semver (هنگام
کامپایل با mix الیکسیر) یا قالب XX.YY (در غیر این صورت) جایگزین
میشود. همچنین میتواند نام ماژولی باشد که پشتیبانی CAPTCHA در
ejabberd را پیادهسازی کرده است. مقدار پیشفرضی وجود ندارد: هنگامی که
این گزینه تنظیم نشده باشد، قابلیت CAPTCHA کاملاً غیرفعال است.
مثالها:
هنگام استفاده از نصبکنندههای ejabberd یا تصویر کانتینر، اسکریپتهای
نمونه captcha میتوانند به این شکل استفاده شوند:
captcha_cmd: /opt/ejabberd-@VERSION@/lib/ejabberd-@SEMVER@/priv/bin/captcha.sh
captcha_host: String
منسوخ شده. به جای آن از captcha_url استفاده کنید.
captcha_limit: pos_integer() | infinity
حداکثر تعداد تصاویر basic.md#captcha|CAPTCHA تولیدشده در دقیقه برای
هر JID مشخص. این گزینه برای محافظت از سرور در برابر حملات DoS مبتنی
بر CAPTCHA طراحی شده است. مقدار پیشفرض infinity است.
captcha_url: URL | auto | undefined
توجه درباره این گزینه: در نسخه 23.04 بهبود یافته است. آدرس URL که
درخواستهای basic.md#captcha|CAPTCHA باید به آن ارسال شوند. توجه:
باید request_handlers را نیز برای شنونده ejabberd_http پیکربندی
کنید. اگر روی auto تنظیم شود، URL با استفاده از یک request_handler
از قبل فعالشده ساخته میشود، با رمزگذاری در صورت در دسترس بودن. اگر
روی undefined تنظیم شود، URL با استفاده از captcha_host منسوخشده +
/captcha ساخته میشود. مقدار پیشفرض auto است.
certfiles: [Path, ...]
این گزینه فهرستی از مسیرهای فایل (با امکان استفاده از wildcardها)
حاوی گواهیهای PEM یا کلیدهای خصوصی PEM را میپذیرد. در هنگام
راهاندازی یا بارگذاری مجدد پیکربندی، ejabberd تمام گواهیها را از
این فایلها میخواند، مرتبسازی میکند، موارد تکراری را حذف میکند،
کلیدهای خصوصی متناظر را پیدا میکند و سپس زنجیرههای کامل گواهی را
برای استفاده در اتصالات TLS بازسازی میکند. از این گزینه زمانی
استفاده کنید که TLS در هر یک از شنوندگان ejabberd فعال است:
ejabberd_c2s، ejabberd_http و غیره. توجه: اگر فایلهای گواهی را
تغییر دادید یا مقدار گزینه را عوض کردید، برای بازسازی و بارگذاری
مجدد زنجیرههای گواهی، ejabberdctl reload-config را اجرا کنید.
مثالها:
اگر از گواهیهای Let’s Encrypt برای دامنه "domain.tld" استفاده
میکنید، پیکربندی به این شکل خواهد بود:
certfiles:
- /etc/letsencrypt/live/domain.tld/fullchain.pem
- /etc/letsencrypt/live/domain.tld/privkey.pem
cluster_backend: Backend
یک بکند پایگاه داده برای ذخیره اطلاعات مربوط به خوشهبندی. تنها
مقدار موجود در حال حاضر mnesia است.
cluster_nodes: [Node, ...]
فهرستی از گرههای Erlang برای اتصال هنگام راهاندازی ejabberd. این
گزینه عمدتاً برای سفارشیسازی ejabberd و راهاندازیهای پیچیده در نظر
گرفته شده است. مقدار پیشفرض یک فهرست خالی است.
default_db: mnesia | sql
database.md#default-database|پایگاه داده پیشفرض برای ذخیره دادههای
پایدار در ejabberd. برخی اجزا میتوانند با گزینههای سطح بالای خاصی
مانند oauth_db_type پیکربندی شوند. بسیاری از ماژولها میتوانند با
گزینههای خاص ماژول، معمولاً با نام db_type، پیکربندی شوند. مقدار
پیشفرض mnesia است.
default_ram_db: mnesia | redis | sql
ذخیرهسازی فرار (در حافظه) پیشفرض برای ejabberd. برخی اجزا میتوانند
با گزینههای سطح بالای خاصی مانند router_db_type و sm_db_type
پیکربندی شوند. برخی ماژولها میتوانند با گزینههای خاص ماژول، معمولاً
با نام ram_db_type، پیکربندی شوند. مقدار پیشفرض mnesia است.
define_keyword: {NAME: Value}
توجه درباره این گزینه: در نسخه 25.03 اضافه شده است. امکان تعریف
../configuration/file-format.md#macros-and-keywords|کلیدواژههای
پیکربندی را فراهم میکند.
مثال:
define_keyword:
SQL_USERNAME: "eja.global"
host_config:
localhost:
define_keyword:
SQL_USERNAME: "eja.localhost"
sql_username: "prefix.@SQL_USERNAME@"
define_macro: {NAME: Value}
توجه درباره این گزینه: در نسخه 25.03 بهبود یافته است. امکان تعریف
../configuration/file-format.md#macros-and-keywords|ماکروهای
پیکربندی را فراهم میکند.
مثال:
define_macro:
DEBUG: debug
LOG_LEVEL: DEBUG
USERBOB:
user: bob@localhost
loglevel: LOG_LEVEL
acl:
admin: USERBOB
disable_sasl_mechanisms: [Mechanism, ...]
فهرستی از مکانیزمهای SASL (مانند DIGEST-MD5 یا SCRAM-SHA1) را مشخص
کنید که نباید به کلاینت ارائه شوند. برای راحتی، مقدار Mechanism به
بزرگی و کوچکی حروف حساس نیست. مقدار پیشفرض یک فهرست خالی است، یعنی
بهطور پیشفرض هیچ مکانیزمی غیرفعال نشده است.
disable_sasl_scram_downgrade_protection: true | false
امکان غیرفعالسازی ارسال دادههای مورد نیاز توسط XEP-0474: SASL SCRAM
Downgrade Protection را فراهم میکند. برخی کلاینتهای دارای باگ
شناختهشده (مانند آنهایی که از strophejs 1.6.2 استفاده میکنند)
هنگامی که سرور دادههای این مشخصه را ارسال کند، قادر به احراز هویت
نخواهند بود. این گزینه به سرور اجازه میدهد آن را غیرفعال کند تا حتی
کلاینتهای دارای باگ بتوانند متصل شوند، اما در عوض حفاظت MITM کاهش
مییابد. مقدار پیشفرض این گزینه false است که این افزونه را فعال
میکند.
domain_balancing: {Domain: Options}
الگوریتمی برای ../guide/clustering.md#service-load-balancing|توزیع
بار اجزایی که به یک خوشه ejabberd متصل شدهاند. این یعنی میتوانید یک
یا چند نمونه از همان کامپوننت را روی هر گره ejabberd متصل کنید و
ترافیک بهطور خودکار توزیع شود. الگوریتم تحویل پیام به کامپوننت(ها)
را میتوان با این گزینه مشخص کرد. برای هر کامپوننت متصل به عنوان
Domain، Options موجود عبارتند از:
component_number: 2..1000
تعداد کامپوننتهایی که باید متوازن شوند.
type: Value
نحوه تحویل stanzaها به کامپوننتهای متصل. مقدار پیشفرض random
است. مقادیر ممکن:
- bare_destination
بر اساس JID ساده (بدون resource) از مشخصه to بسته
- bare_source
بر اساس JID ساده (بدون resource) از مشخصه from بسته استفاده
میشود
- destination
یک نمونه بر اساس JID کامل از مشخصه to بسته انتخاب میشود
- random
یک نمونه بهطور تصادفی انتخاب میشود
- source
بر اساس JID کامل از مشخصه from بسته
مثال:
domain_balancing:
component.domain.tld:
type: destination
component_number: 5
transport.example.org:
type: bare_source
ext_api_headers: Headers
رشتهای از سرآیندها (جدا شده با ویرگول ,) که ejabberd هنگام ارسال
درخواستهای ReST ارائه خواهد داد. مقدار پیشفرض یک رشته خالی از
سرآیندها است: "".
ext_api_http_pool_size: pos_integer()
اندازه استخر HTTP را تعریف میکند، یعنی حداکثر تعداد نشستهایی که
سرویس ReST در ejabberd بهطور همزمان مدیریت خواهد کرد. مقدار پیشفرض:
100 است.
ext_api_path_oauth: Path
مسیر پایه URI هنگام انجام درخواستهای OAUTH ReST را تعریف میکند.
مقدار پیشفرض: "/oauth" است.
ext_api_url: URL
URI پایه هنگام انجام درخواستهای ReST را تعریف میکند. مقدار پیشفرض:
"http://localhost/api" است.
extauth_pool_name: Name
پسوند نام استخر را در authentication.md#external-script|احراز هویت
خارجی تعریف میکند، بهطوری که نام کامل استخر extauth_pool_Name خواهد
بود. مقدار پیشفرض نام میزبان است.
extauth_pool_size: Size
این گزینه تعداد نمونههای برنامه
authentication.md#external-script|احراز هویت خارجی یکسان را برای
توزیع بار بهتر تعریف میکند. مقدار پیشفرض تعداد هستههای CPU موجود
است.
extauth_program: Path
در این گزینه مسیر کامل به authentication.md#external-script|اسکریپت
احراز هویت خارجی را مشخص کنید. اسکریپت باید توسط ejabberd قابل اجرا
باشد.
fqdn: Domain
نام دامنه کاملاً واجد شرایط که در احراز هویت SASL DIGEST-MD5 استفاده
خواهد شد. بهطور پیشفرض بهصورت خودکار تشخیص داده میشود.
hide_sensitive_log_data: true | false
یک گزینه حریم خصوصی برای جلوگیری از ثبت دادههای حساس (عمدتاً آدرسهای
IP) در لاگ. مقدار پیشفرض false است برای سازگاری با نسخههای قبلی.
host_config: {Host: Options}
این گزینه برای تعریف مجدد Options برای
../configuration/basic.md#virtual-hosting|میزبان مجازی Host استفاده
میشود. در مثال زیر روش احراز هویت LDAP برای میزبان مجازی domain.tld
و روش SQL برای میزبان مجازی example.org استفاده خواهد شد.
مثال:
hosts:
- domain.tld
- example.org
auth_method:
- sql
host_config:
domain.tld:
auth_method:
- ldap
hosts: [Domain1, Domain2, ...]
فهرستی از یک یا چند ../configuration/basic.md#host-names|نام میزبان
(یا دامنه) که ejabberd سرویسدهی خواهد کرد. این یک گزینه اجباری است.
hosts_alias: {Alias: Host}
توجه درباره این گزینه: در نسخه 25.07 اضافه شده است. تعریف نامهای
مستعار برای میزبانهای مجازی موجود مدیریتشده توسط ejabberd. یک نام
مستعار میتواند یک عبارت regexp باشد. این گزینه فقط توسط شنونده
ejabberd_http بررسی میشود.
مثال:
hosts:
- domain.tld
- example.org
hosts_alias:
xmpp.domain.tld: domain.tld
jabber.domain.tld: domain.tld
mytest.net: example.org
"exa*": example.org
include_config_file: [Filename, ...] | {Filename: Options}
خواندن و
../configuration/file-format.md#include-additional-files|الحاق فایل
اضافی از Filename. اگر مقدار در قالب {Filename: Options} ارائه شود،
Options باید یکی از موارد زیر باشد:
allow_only: [OptionName, ...]
فقط استفاده از آن گزینهها را در فایل الحاقشده Filename مجاز
میداند. گزینههایی که با این معیار مطابقت ندارند پذیرفته
نمیشوند. مقدار پیشفرض شامل تمام گزینهها است.
disallow: [OptionName, ...]
استفاده از آن گزینهها را در فایل الحاقشده Filename ممنوع میکند.
گزینههایی که با این معیار مطابقت دارند پذیرفته نمیشوند. مقدار
پیشفرض یک فهرست خالی است.
install_contrib_modules: [Module, ...]
توجه درباره این گزینه: در نسخه 23.10 اضافه شده است. ماژولهایی از
../../admin/guide/modules.md#ejabberd-modules|ejabberd-modules که
باید بهطور خودکار هنگام راهاندازی نصب شوند. مقدار پیشفرض یک فهرست
خالی از ماژولها است: [].
مثال:
install_contrib_modules:
- mod_tombstones
modules:
mod_tombstones: {}
jwt_auth_only_rule: AccessName
این قانون ACL حسابهایی را تعریف میکند که فقط میتوانند از روش احراز
هویت authentication.md#jwt-authentication|JWT استفاده کنند، حتی اگر
روشهای دیگری نیز در فایل پیکربندی ejabberd تعریف شده باشند. به
عبارت دیگر: اگر چند روش احراز هویت برای این میزبان فعال باشند (JWT،
SQL، ...)، کاربرانی که با این قانون مطابقت دارند فقط میتوانند از
JWT استفاده کنند. مقدار پیشفرض none است.
jwt_jid_field: FieldName
بهطور پیشفرض، JID در فیلد "jid" JWT تعریف میشود. در این گزینه
میتوانید نام فیلد دیگری در authentication.md#jwt-authentication|JWT
که JID در آن تعریف شده است را مشخص کنید.
jwt_key: FilePath
مسیر به فایلی که حاوی کلید authentication.md#jwt-authentication|JWT
است.
قالبهای فایل پشتیبانیشده:
• PEM format - کلیدهای رمزگذاریشده استاندارد PEM (RSA، EC، EdDSA و
غیره)
• JWK (JSON Web Key) - فرمت JSON
• JWK Set - JSON با آرایه "keys" (اما باید دقیقاً یک کلید داشته باشد)
به طور پیشفرض هیچ مسیری تعریف نشده است، یعنی: undefined.
language: Language
../configuration/basic.md#default-language|زبان پیشفرض رشتههای سرور
که توسط کلاینتهای XMPP قابل مشاهده هستند را تعریف میکند. اگر یک
کلاینت XMPP دارای ویژگی xml:lang نباشد، از زبان مشخصشده استفاده
میشود. مقدار پیشفرض "en" است.
ldap_backups: [Host, ...]
فهرستی از آدرسهای IP یا نامهای DNS سرورهای پشتیبان LDAP (به
../configuration/ldap.md#ldap-connection|اتصال LDAP مراجعه کنید).
هنگامی که هیچکدام از سرورهای فهرستشده در گزینه ldap_servers قابل
دسترس نباشند، ejabberd به این سرورهای پشتیبان متصل میشود. پیشفرض یک
فهرست خالی است، یعنی هیچ سرور پشتیبانی مشخص نشده است. توجه داشته
باشید که ejabberd تنها زمانی به سرور بعدی متصل میشود که اتصال موجود
قطع شود؛ این برنامه تشخیص نمیدهد که یک سرور که قبلاً تلاش اتصال به
آن ناموفق بوده، دوباره در دسترس شده است.
ldap_base: Base
دایرکتوری پایه LDAP که حسابهای کاربری را ذخیره میکند. هیچ مقدار
پیشفرضی وجود ندارد: برای اینکه اتصالات LDAP به درستی کار کنند، باید
این گزینه را تنظیم کنید.
ldap_deref_aliases: never | always | finding | searching
تعیین میکند که آیا نامهای مستعار (alias) ارجاعزدایی شوند یا خیر.
مقدار پیشفرض never است.
ldap_dn_filter: {Filter: FilterAttrs}
این فیلتر بر روی نتایج بازگشتی از فیلتر اصلی اعمال میشود. این فیلتر
یک جستجوی LDAP اضافی انجام میدهد تا نتیجه کامل را تولید کند. این
زمانی مفید است که نتوان تمام قوانین فیلتر را در ldap_filter تعریف
کرد. میتوان متغیرهای الگو "%u"، "%d"، "%s" و "%D" را در Filter
تعریف کرد: "%u" با بخش کاربری JID جایگزین میشود، "%d" با دامنه
متناظر (میزبان مجازی) جایگزین میشود، تمام متغیرهای "%s" به ترتیب با
مقادیر ویژگیهای FilterAttrs جایگزین میشوند و "%D" با Distinguished
Name از مجموعه نتایج جایگزین میشود. هیچ مقدار پیشفرضی وجود ندارد،
به این معنی که نتیجه فیلتر نمیشود. هشدار: از آنجایی که این فیلتر
جستجوهای اضافی LDAP انجام میدهد، تنها به عنوان آخرین راهحل از آن
استفاده کنید: در صورت امکان سعی کنید تمام قوانین فیلتر را در گزینه
ldap_filter تعریف کنید.
مثال:
ldap_dn_filter:
"(&(name=%s)(owner=%D)(user=%u@%d))": [sn]
ldap_encrypt: tls | none
تعیین میکند که آیا اتصال LDAP با TLS رمزگذاری شود یا خیر. مقدار
پیشفرض none است. توجه: رمزگذاری STARTTLS پشتیبانی نمیشود.
ldap_filter: Filter
یک فیلتر LDAP طبق تعریف RFC4515. هیچ مقدار پیشفرضی وجود ندارد.
مثال: "(&(objectClass=shadowAccount)(memberOf=XMPP Users))". توجه:
فراموش نکنید که براکتها را ببندید و از فضاهای خالی اضافی استفاده
نکنید. همچنین نباید از ویژگی "uid" در فیلتر استفاده کنید زیرا این
ویژگی به طور خودکار به فیلتر اضافه میشود.
ldap_password: Password
رمز عبور اتصال (Bind password). مقدار پیشفرض یک رشته خالی است.
ldap_port: 1..65535
پورت اتصال به سرور LDAP. پورت پیشفرض 389 در صورت غیرفعال بودن
رمزگذاری و 636 در صورت فعال بودن رمزگذاری است.
ldap_rootdn: RootDN
Distinguished Name اتصال (Bind). مقدار پیشفرض یک رشته خالی است که
به معنای "اتصال ناشناس" است.
ldap_servers: [Host, ...]
فهرستی از آدرسهای IP یا نامهای DNS سرورهای LDAP (به
../configuration/ldap.md#ldap-connection|اتصال LDAP مراجعه کنید).
ejabberd بلافاصله به تمام آنها متصل میشود و در صورت قطع اتصال، به
طور نامحدود مجدداً متصل میشود. مقدار پیشفرض [localhost] است.
ldap_tls_cacertfile: Path
مسیر فایلی که حاوی گواهیهای CA رمزگذاریشده با PEM است. این گزینه
هنگامی که تأیید TLS فعال است الزامی میباشد.
ldap_tls_certfile: Path
مسیر فایلی که حاوی گواهی رمزگذاریشده با PEM به همراه کلید خصوصی
رمزگذاریشده با PEM است. این گواهی هنگامی که TLS برای اتصالات LDAP
فعال است توسط ejabberd ارائه میشود. هیچ مقدار پیشفرضی وجود ندارد،
به این معنی که هیچ گواهی کلاینتی ارسال نمیشود.
ldap_tls_depth: Number
حداکثر عمق تأیید را هنگامی که تأیید TLS فعال است مشخص میکند، یعنی
تا چه حدی در یک زنجیره گواهیها میتوان پیش رفت قبل از اینکه تأیید
شکستخورده تلقی شود. گواهی همتا = 0، گواهی CA = 1، گواهی CA سطح
بالاتر = 2 و غیره. مقدار 2 به این معناست که یک زنجیره میتواند
حداکثر شامل گواهی همتا، گواهی CA، گواهی CA بعدی و یک گواهی CA اضافی
باشد. مقدار پیشفرض 1 است.
ldap_tls_verify: false | soft | hard
این گزینه تعیین میکند که آیا گواهی سرور LDAP هنگامی که TLS فعال است
تأیید شود یا خیر. هنگامی که hard تنظیم شده باشد، ejabberd در صورت
نامعتبر بودن گواهی ادامه نمیدهد. هنگامی که soft تنظیم شده باشد،
ejabberd حتی اگر بررسی ناموفق باشد ادامه میدهد. مقدار پیشفرض false
است که به این معنی است که هیچ بررسیای انجام نمیشود.
ldap_uids: [Attr] | {Attr: AttrFormat}
ویژگیهای LDAP که فهرستی از ویژگیها برای استفاده به عنوان جایگزین
دریافت JID را نگه میدارند، که در آن Attr یک ویژگی LDAP است که بخش
کاربری JID را نگه میدارد و AttrFormat باید دقیقاً یک متغیر الگو "%u"
داشته باشد که با بخش کاربری JID جایگزین میشود. به عنوان مثال،
"%u@example.org". اگر مقدار به شکل [Attr] باشد، فرض میشود
AttrFormat برابر با "%u" است.
listen: [Options, ...]
گزینه پیکربندی شنوندگان. برای جزئیات به بخش listen.md|ماژولهای
Listen مراجعه کنید.
log_burst_limit_count: Number
توجه درباره این گزینه: در نسخه 22.10 اضافه شد. تعداد پیامهایی که در
بازه زمانی log_burst_limit_window_time پذیرفته میشوند قبل از اینکه
شروع به رد کردن آنها شود. پیشفرض 500 است.
log_burst_limit_window_time: Number
توجه درباره این گزینه: در نسخه 22.10 اضافه شد. بازه زمانی برای
محدودسازی نرخ پیامهای گزارش. پیشفرض 1 ثانیه است.
log_modules_fully: [Module, ...]
توجه درباره این گزینه: در نسخه 23.01 اضافه شد. فهرست ماژولهایی که
همه چیز را مستقل از گزینه کلی loglevel گزارش میدهند.
log_rotate_count: Number
تعداد فایلهای گزارش چرخشی که نگه داشته میشوند. مقدار پیشفرض 1 است،
که به این معنی است که تنها ejabberd.log.0، error.log.0 و
crash.log.0 نگه داشته میشوند.
log_rotate_size: pos_integer() | infinity
اندازه (به بایت) یک فایل گزارش برای فعالسازی چرخش. اگر روی infinity
تنظیم شود، چرخش گزارش غیرفعال میشود. مقدار پیشفرض 10 مگابایت برحسب
بایت است: 10485760.
loglevel: none | emergency | alert | critical | error | warning |
notice | info | debug
سطح جزئیات ../configuration/basic.md#logging|گزارشگیری ejabberd.
مقدار پیشفرض info است. توجه: نسخههای قبلی ejabberd سطوح گزارش را به
فرمت عددی (0..5) تعریف میکردند. مقادیر عددی هنوز برای سازگاری با
نسخههای قدیمی پذیرفته میشوند، اما توصیه نمیشوند.
max_fsm_queue: Size
این گزینه حداکثر تعداد عناصر در صف FSM (ماشین حالت متناهی) را مشخص
میکند. به طور تقریبی، هر پیام در این صفها نشاندهنده یک استانزای XML
است که در صف قرار گرفته تا به جریان خروجی مربوطه ارسال شود. اگر
اندازه صف به حد مجاز برسد (به عنوان مثال، زیرا دریافتکننده
استانزاها بسیار کند است)، FSM و اتصال متناظر (در صورت وجود) خاتمه
مییابند و پیام خطا گزارش میشود. مقدار مناسب برای این گزینه به
پیکربندی سختافزاری شما بستگی دارد. مقادیر مجاز اعداد صحیح مثبت
هستند. مقدار پیشفرض 10000 است.
modules: {Module: Options}
تمام گزینههای پیکربندی modules.md|ماژولها را تنظیم میکند.
negotiation_timeout: timeout()
زمان انتظار برای تکمیل مذاکره جریان XMPP. هنگامی که وقت تمام میشود،
جریان XMPP متناظر بسته میشود. مقدار پیشفرض 120 ثانیه است.
net_ticktime: timeout()
این گزینه میتواند برای تنظیم پارامتر tick time در net_kernel
استفاده شود. به ماشین مجازی Erlang میگوید که گرهها چند بار باید
بررسی کنند که ارتباط درونگرهای قطع نشده است. این گزینه باید مقدار
یکسانی در تمام گرهها داشته باشد، وگرنه به خطاهای نامحسوس منجر
میشود. معمولاً بهتر است مقدار پیشفرض این گزینه را بدون تغییر رها
کنید، تنها در صورتی که میدانید چه کاری انجام میدهید آن را تنظیم
کنید. مقدار پیشفرض 1 minute است.
new_sql_schema: true | false
توجه درباره این گزینه: در نسخه 25.10 منسوخ شد. این گزینه در
ejabberd نسخه 25.10 به sql_schema_multihost تغییر نام یافت. لطفاً
پیکربندی خود را بهروز کنید تا از نام گزینه جدید استفاده کنید.
oauth_access: AccessName
به طور پیشفرض ایجاد توکنهای OAuth مجاز نیست. برای تعریف اینکه کدام
کاربران میتوانند توکنهای OAuth ایجاد کنند، میتوانید به یک قانون
دسترسی ejabberd در گزینه oauth_access ارجاع دهید. از all استفاده
کنید تا همه بتوانند توکن ایجاد کنند.
oauth_cache_life_time: timeout()
مانند cache_life_time، اما تنها برای کش OAuth اعمال میشود. اگر
تنظیم نشده باشد، از مقدار cache_life_time استفاده میشود.
oauth_cache_missed: true | false
مانند cache_missed، اما تنها برای کش OAuth اعمال میشود. اگر تنظیم
نشده باشد، از مقدار cache_missed استفاده میشود.
oauth_cache_rest_failure_life_time: timeout()
توجه درباره این گزینه: در نسخه 21.01 اضافه شد. مدت زمانی که یک خطا
در OAuth ReST در کش نگه داشته میشود. مقدار پیشفرض infinity است.
oauth_cache_size: pos_integer() | infinity
مانند cache_size، اما تنها برای کش OAuth اعمال میشود. اگر تنظیم
نشده باشد، از مقدار cache_size استفاده میشود.
oauth_client_id_check: allow | db | deny
تعریف میکند که آیا احراز هویت کلاینت همیشه مجاز است، رد میشود، یا
بستگی دارد به اینکه آیا شناسه کلاینت در پایگاه داده موجود است.
مقدار پیشفرض db است.
oauth_db_type: mnesia | sql
بکاند پایگاه داده برای استفاده در احراز هویت OAuth. مقدار پیشفرض از
گزینه default_db گرفته میشود، یا اگر تنظیم نشده باشد، mnesia
استفاده میشود.
oauth_expire: timeout()
مدت زمانی که توکن OAuth معتبر است، به ثانیه. پس از این مدت، توکن
منقضی میشود و اعتبارنامه واگذاریشده دیگر قابل استفاده نیست و از
پایگاه داده حذف میشود. مقدار پیشفرض 4294967 ثانیه است.
oauth_use_cache: true | false
مانند use_cache، اما تنها برای کش OAuth اعمال میشود. اگر تنظیم نشده
باشد، از مقدار use_cache استفاده میشود.
oom_killer: true | false
فعال یا غیرفعال کردن OOM killer (کشنده حافظه تمامشده). هنگامی که
حافظه سیستم از حد تعریفشده در گزینه oom_watermark بالاتر میرود،
ejabberd OOM killer را برای خاتمه دادن به فرآیندهای Erlang با
بیشترین مصرف حافظه فعال میکند. توجه داشته باشید که برای حفظ عملکرد،
ejabberd تنها تلاش میکند فرآیندهای موقت را مانند مدیریتکنندههای
نشستهای کلاینت، s2s یا اتصالات پایگاه داده را پایان دهد. مقدار
پیشفرض true است.
oom_queue: Size
OOM killer را هنگامی فعال میکند که برخی از فرآیندهای Erlang در حال
اجرا صف پیامهایی بالاتر از این Size داشته باشند. توجه داشته باشید
که چنین فرآیندهایی کشته نمیشوند اگر گزینه oom_killer روی false
تنظیم شده باشد یا اگر oom_watermark هنوز به آن نرسیده باشد.
oom_watermark: Percent
درصدی از کل حافظه سیستم که در صورت مصرف، OOM killer باید فعال شود و
برخی از فرآیندها احتمالاً کشته شوند (به گزینه oom_killer مراجعه
کنید). بعداً، هنگامی که حافظه به زیر این Percent کاهش یابد، OOM
killer غیرفعال میشود. مقدار پیشفرض 80 درصد است.
outgoing_s2s_families: [ipv6 | ipv4, ...]
توجه درباره این گزینه: در نسخه 23.01 تغییر کرد. مشخص میکند که کدام
خانوادههای آدرس و به چه ترتیبی امتحان شوند. پیشفرض [ipv6, ipv4] است
که به این معنی است که ابتدا اتصال با IPv6 امتحان میشود، و در صورت
شکست از IPv4 استفاده میشود. این گزینه هنگام استفاده از ejabberd
نسخه 23.01 و Erlang/OTP 22 یا نسخههای جدیدتر آنها منسوخ و نامرتبط
است.
outgoing_s2s_ipv4_address: Address
توجه درباره این گزینه: در نسخه 20.12 اضافه شد. آدرس IPv4 که هنگام
برقراری اتصال خروجی S2S IPv4 استفاده میشود را مشخص میکند، به عنوان
مثال "127.0.0.1". مقدار پیشفرض undefined است.
outgoing_s2s_ipv6_address: Address
توجه درباره این گزینه: در نسخه 20.12 اضافه شد. آدرس IPv6 که هنگام
برقراری اتصال خروجی S2S IPv6 استفاده میشود را مشخص میکند، به عنوان
مثال "::FFFF:127.0.0.1". مقدار پیشفرض undefined است.
outgoing_s2s_port: 1..65535
شماره پورتی که برای اتصالات خروجی s2s هنگامی که سرور مقصد رکورد SRV
ندارد استفاده میشود. مقدار پیشفرض 5269 است.
outgoing_s2s_timeout: timeout()
وقفه زمانی به ثانیه برای تلاشهای اتصال خروجی S2S. مقدار پیشفرض 10
ثانیه است.
pam_service: Name
این گزینه نام سرویس authentication.md#pam-authentication|PAM را
تعریف میکند. برای اطلاعات بیشتر به مستندات PAM سیستمعامل خود مراجعه
کنید. مقدار پیشفرض ejabberd است.
pam_userinfotype: username | jid
این گزینه تعریف میکند که ejabberd چه نوع اطلاعاتی درباره کاربر به
سرویس authentication.md#pam-authentication|PAM ارائه میدهد: فقط نام
کاربری، یا JID کاربر. مقدار پیشفرض username است.
pgsql_users_number_estimate: true | false
تعیین میکند که آیا از تخمین PostgreSQL هنگام شمارش کاربران
ثبتنامشده استفاده شود. مقدار پیشفرض false است.
queue_dir: Directory
اگر گزینه queue_type روی file تنظیم شده باشد، از این Directory برای
ذخیره صفهای فایل استفاده میشود. پیشفرض این است که صفها درون
دایرکتوری Mnesia نگه داشته شوند.
queue_type: ram | file
نوع پیشفرض صفها در ejabberd. ماژولها میتوانند مقدار خاص خود را برای
این گزینه داشته باشند. مقدار ram به این معنی است که صفها در حافظه
نگه داشته میشوند. اگر مقدار file تنظیم شود، میتوانید دایرکتوری را
در گزینه queue_dir مشخص کنید که صفهای فایل در آن قرار میگیرند.
مقدار پیشفرض ram است.
redis_connect_timeout: timeout()
وقفه زمانی برای انتظار جهت برقراری مجدد اتصال به سرور
database.md#redis|Redis. پیشفرض 1 second است.
redis_db: Number
شماره پایگاه داده database.md#redis|Redis. پیشفرض 0 است.
redis_password: Password
رمز عبور سرور database.md#redis|Redis. پیشفرض یک رشته خالی است،
یعنی بدون رمز عبور.
redis_pool_size: Number
تعداد اتصالات همزمان به سرور database.md#redis|Redis. مقدار پیشفرض
10 است.
redis_port: 1..65535
پورتی که سرور database.md#redis|Redis اتصالات را روی آن میپذیرد.
پیشفرض 6379 است.
redis_queue_type: ram | file
نوع صف درخواست برای سرور database.md#redis|Redis. برای توضیح به شرح
گزینه queue_type مراجعه کنید. مقدار پیشفرض همان مقدار تعریفشده در
queue_type یا ram در صورت عدم تنظیم آن است.
redis_server: Host | IP Address | Unix Socket Path
توجه درباره این گزینه: در نسخه 24.12 بهبود یافت. نام میزبان، آدرس
IP یا مسیر سوکت دامنه یونیکس سرور database.md#redis|Redis. مسیر
سوکت دامنه یونیکس را اینگونه تنظیم کنید: "unix:/path/to/socket".
مقدار پیشفرض localhost است.
registration_timeout: timeout()
این یک گزینه سراسری برای ماژول mod_register است. تعداد دفعات ثبتنام
از یک آدرس IP یا نام کاربری مشخص را محدود میکند. بنابراین، کاربری
که در این مدت پس از ثبتنام قبلیاش از همان آدرس IP یا JID تلاش میکند
یک حساب جدید ثبت کند، پیام خطایی با توضیح مربوطه دریافت میکند. برای
غیرفعال کردن این محدودیت، مقدار را روی infinity تنظیم کنید. مقدار
پیشفرض 600 seconds است.
replaced_connection_timeout: timeout()
توجه درباره این گزینه: در نسخه 26.01 اضافه شد. حداکثر زمانی که نشست
جدید منتظر خاتمه یافتن نشستی که جایگزین آن میشود، میماند. این به
نشست قدیمی اجازه میدهد که حضورهای ناموجود خود را به درستی ارسال کند
و به شرایط رقابتی احتمالی بین حضورهای نشستهای قدیمی و جدید کمک
میکند.
resource_conflict: setresource | closeold | closenew
توجه: این گزینه منسوخ شده است و ممکن است در نسخههای آینده حذف شود.
مقادیر ممکن دقیقاً با سه احتمال توصیفشده در XMPP Core: بخش 7.7.2.2
مطابقت دارند. مقدار پیشفرض closeold است. اگر کلاینت از احراز هویت
قدیمی Jabber Non-SASL (XEP-0078) استفاده کند، این گزینه رعایت
نمیشود و عملیات انجامشده closeold است.
rest_proxy: Host
توجه درباره این گزینه: در نسخه 25.07 اضافه شد. آدرس یک پروکسی HTTP
Connect که توسط ماژولهایی که فراخوانیهای rest انجام میدهند (مانند
ejabberd_oauth_rest) استفاده میشود.
rest_proxy_password: string()
توجه درباره این گزینه: در نسخه 25.07 اضافه شد. رمز عبور مورد
استفاده برای احراز هویت به پروکسی HTTP Connect که توسط ماژولهایی که
فراخوانیهای rest انجام میدهند (مانند ejabberd_oauth_rest) استفاده
میشود.
rest_proxy_port: 1..65535
توجه درباره این گزینه: در نسخه 25.07 اضافه شد. پورت یک پروکسی HTTP
Connect که توسط ماژولهایی که فراخوانیهای rest انجام میدهند (مانند
ejabberd_oauth_rest) استفاده میشود.
rest_proxy_username: string()
توجه درباره این گزینه: در نسخه 25.07 اضافه شد. نام کاربری مورد
استفاده برای احراز هویت به پروکسی HTTP Connect که توسط ماژولهایی که
فراخوانیهای rest انجام میدهند (مانند ejabberd_oauth_rest) استفاده
میشود.
router_cache_life_time: timeout()
مانند cache_life_time، اما تنها برای کش جدول مسیریابی اعمال میشود.
اگر تنظیم نشده باشد، از مقدار cache_life_time استفاده میشود.
router_cache_missed: true | false
مانند cache_missed، اما تنها برای کش جدول مسیریابی اعمال میشود. اگر
تنظیم نشده باشد، از مقدار cache_missed استفاده میشود.
router_cache_size: pos_integer() | infinity
مانند cache_size، اما تنها برای کش جدول مسیریابی اعمال میشود. اگر
تنظیم نشده باشد، از مقدار cache_size استفاده میشود.
router_db_type: mnesia | redis | sql
بکاند پایگاه داده برای استفاده در اطلاعات مسیریابی. مقدار پیشفرض از
گزینه default_ram_db گرفته میشود، یا اگر تنظیم نشده باشد، mnesia
استفاده میشود.
router_use_cache: true | false
مانند use_cache، اما تنها برای کش جدول مسیریابی اعمال میشود. اگر
تنظیم نشده باشد، از مقدار use_cache استفاده میشود.
rpc_timeout: timeout()
وقفه زمانی برای فراخوانیهای تابع از راه دور بین گرهها در یک خوشه
ejabberd. احتمالاً هرگز نباید این مقدار را تغییر دهید زیرا این
فراخوانیها تنها برای نیازهای داخلی استفاده میشوند. مقدار پیشفرض 5
ثانیه است.
s2s_access: Access
این basic.md#access-rules|قانون دسترسی تعریف میکند که اتصالات s2s
به کدام سرورهای راه دور میتوانند برقرار شوند. مقدار پیشفرض all است؛
هیچ محدودیتی اعمال نمیشود و اتصال s2s به/از تمام سرورهای راه دور
مجاز است.
s2s_cafile: Path
مسیر فایلی با گواهیهای ریشه CA که برای احراز هویت اتصالات s2s
استفاده میشود. اگر تنظیم نشده باشد، از مقدار ca_file استفاده میشود.
میتوانید از host_config برای تعیین این گزینه به ازای هر میزبان مجازی
استفاده کنید.
s2s_ciphers: [Cipher, ...]
فهرستی از رمزهای OpenSSL برای استفاده در اتصالات s2s. مقدار پیشفرض
در مثال زیر نشان داده شده است:
مثال:
s2s_ciphers:
- HIGH
- "!aNULL"
- "!eNULL"
- "!3DES"
- "@STRENGTH"
s2s_dhfile: Path
مسیر کامل به فایلی که حاوی پارامترهای DH سفارشی برای استفاده در
اتصالات s2s است. چنین فایلی میتواند با دستور "openssl dhparam -out
dh.pem 2048" ایجاد شود. اگر این گزینه مشخص نشده باشد، از گروه 2048
بیتی MODP با زیرگروه مرتبه اول 256 بیتی طبق تعریف RFC5114 بخش 2.3
استفاده میشود.
s2s_dns_retries: Number
تعداد تلاش مجدد برای حل DNS. مقدار پیشفرض 2 است.
s2s_dns_timeout: timeout()
وقفه زمانی برای حل DNS. مقدار پیشفرض 10 ثانیه است.
s2s_max_retry_delay: timeout()
حداکثر تأخیر مجاز برای تلاش مجدد اتصال s2s پس از یک تلاش ناموفق.
مقدار پیشفرض 300 ثانیه (5 دقیقه) است.
s2s_protocol_options: [Option, ...]
فهرست گزینههای کلی SSL برای استفاده در اتصالات s2s. اینها به
set_options() OpenSSL نگاشت میشوند. مقدار پیشفرض در مثال زیر نشان
داده شده است:
مثال:
s2s_protocol_options:
- no_sslv3
- cipher_server_preference
- no_compression
s2s_queue_type: ram | file
نوع صف برای بستههای s2s. برای توضیح به شرح گزینه queue_type مراجعه
کنید. مقدار پیشفرض همان مقدار تعریفشده در queue_type یا ram در صورت
عدم تنظیم آن است.
s2s_timeout: timeout()
زمان انتظار قبل از بستن یک اتصال s2s بیکار. مقدار پیشفرض 1 ساعت
است.
s2s_tls_compression: true | false
تعیین میکند که آیا فشردهسازی TLS برای اتصالات s2s فعال یا غیرفعال
شود. مقدار پیشفرض false است.
s2s_use_starttls: true | false | optional | required
تعیین میکند که آیا از STARTTLS برای اتصالات s2s استفاده شود. مقدار
false به این معنی است که STARTTLS ممنوع است. مقدار true یا optional
به این معنی است که STARTTLS فعال است اما اتصالات ساده هنوز مجاز
هستند. و مقدار required به این معنی است که تنها اتصالات STARTTLS
مجاز هستند. مقدار پیشفرض false است (به دلایل تاریخی).
s2s_zlib: true | false
تعیین میکند که آیا از فشردهسازی zlib (طبق تعریف در XEP-0138)
استفاده شود یا خیر. مقدار پیشفرض false است. هشدار: این نوع
فشردهسازی امروزه ناامن تلقی میشود.
shaper: {ShaperName: Rate}
این گزینه مجموعهای از ../configuration/basic.md#shapers|شکلدهندهها
را تعریف میکند. هر شکلدهنده یک نام ShaperName دارد که میتواند در
سایر بخشهای فایل پیکربندی مانند گزینه shaper_rules استفاده شود. خود
شکلدهنده با Rate تعریف میشود، که Rate نشاندهنده حداکثر نرخ ورودی
مجاز به بایت در ثانیه است. هنگامی که یک اتصال از این حد بیشتر شود،
ejabberd خواندن از سوکت را متوقف میکند تا زمانی که نرخ میانگین
مجدداً به زیر حد مجاز برسد. در مثال زیر شکلدهنده normal سرعت ترافیک
را به 1000 بایت در ثانیه و شکلدهنده fast سرعت ترافیک را به 50000
بایت در ثانیه محدود میکند:
مثال:
shaper:
normal: 1000
fast: 50000
shaper_rules: {ShaperRuleName: {Number|ShaperName:
ACLName|ACLDefinition}}
این گزینه ../configuration/basic.md#shaper-rules|قوانین شکلدهنده را
برای تطبیق با کاربران/میزبانها تعریف میکند. معناشناسی مشابه گزینه
access_rules است، تنها تفاوت این است که به جای استفاده از allow یا
deny، باید از نام یک شکلدهنده (تعریفشده در گزینه shaper) یا یک عدد
مثبت استفاده کرد.
مثال:
shaper_rules:
connections_limit:
10:
user: peter@example.com
100: admin
5: all
download_speed:
fast: admin
slow: anonymous_users
normal: all
log_days: 30
sm_cache_life_time: timeout()
مانند cache_life_time، اما تنها برای کش جدول نشستهای کلاینت اعمال
میشود. اگر تنظیم نشده باشد، از مقدار cache_life_time استفاده میشود.
sm_cache_missed: true | false
مانند cache_missed، اما تنها برای کش جدول نشستهای کلاینت اعمال
میشود. اگر تنظیم نشده باشد، از مقدار cache_missed استفاده میشود.
sm_cache_size: pos_integer() | infinity
مانند cache_size، اما تنها برای کش جدول نشستهای کلاینت اعمال میشود.
اگر تنظیم نشده باشد، از مقدار cache_size استفاده میشود.
sm_db_type: mnesia | redis | sql
بکاند پایگاه داده برای استفاده در اطلاعات نشستهای کلاینت. مقدار
پیشفرض از گزینه default_ram_db گرفته میشود، یا اگر تنظیم نشده باشد،
mnesia استفاده میشود.
sm_use_cache: true | false
مانند use_cache، اما تنها برای کش جدول نشستهای کلاینت اعمال میشود.
اگر تنظیم نشده باشد، از مقدار use_cache استفاده میشود.
sql_connect_timeout: timeout()
زمان انتظار برای برقراری اتصال به سرور SQL. مقدار پیشفرض 5 ثانیه
است.
sql_database: DatabaseName | PathSqliteFile
توجه درباره این گزینه: در نسخه 26.04 بهبود یافت. نام پایگاه داده
SQL، که مقدار پیشفرض آن ejabberd است. اگر گزینه sql_type روی sqlite
تنظیم شده باشد، این باید مسیر کامل به یک فایل پایگاه داده باشد، با
مقدار پیشفرض: '"@DATABASE_PATH@/sqlite/@HOST@.sqlite"
sql_flags: [mysql_alternative_upsert]
توجه درباره این گزینه: در نسخه 24.02 اضافه شد. این گزینه فهرستی از
فلگهای SQL را میپذیرد و به طور پیشفرض خالی است.
mysql_alternative_upsert پیادهسازی جایگزین upsert را در MySQL اجبار
میکند.
sql_keepalive_interval: timeout()
بازهای برای ارسال یک درخواست SQL ساختگی جهت زنده نگه داشتن اتصالات
به پایگاه داده. هیچ مقدار پیشفرضی وجود ندارد، بنابراین هیچ درخواست
keepalive ارسال نمیشود.
sql_odbc_driver: Path
توجه درباره این گزینه: در نسخه 20.12 اضافه شد. مسیر درایور ODBC
برای اتصال به پایگاه داده Microsoft SQL Server. این گزینه تنها در
صورتی اعمال میشود که گزینه sql_type روی mssql تنظیم شده باشد و
sql_server یک رشته اتصال ODBC نباشد. مقدار پیشفرض: libtdsodbc.so
sql_password: Password
رمز عبور برای احراز هویت SQL. پیشفرض یک رشته خالی است.
sql_pool_size: Size
تعداد اتصالات به سرور SQL که ejabberd برای هر میزبان مجازی باز
میکند. مقدار پیشفرض 10 است. هشدار: برای SQLite این مقدار به طور
پیشفرض 1 است و به دلیل شرایط رقابتی احتمالی توصیه نمیشود آن را
تغییر دهید.
sql_port: 1..65535
پورتی که سرور SQL اتصالات را روی آن میپذیرد. پیشفرض 3306 برای
MySQL، 5432 برای PostgreSQL و 1433 برای MS SQL است. این گزینه برای
SQLite تأثیری ندارد.
sql_prepared_statements: true | false
توجه درباره این گزینه: در نسخه 20.01 اضافه شد. این گزینه به طور
پیشفرض true است و برای غیرفعال کردن دستورات آماده (prepared
statements) مفید است. این گزینه برای PostgreSQL و MySQL معتبر است.
sql_query_timeout: timeout()
زمان انتظار برای پاسخ یک کوئری SQL. مقدار پیشفرض 60 ثانیه است.
sql_queue_type: ram | file
نوع صف درخواست برای سرور SQL. برای توضیح به شرح گزینه queue_type
مراجعه کنید. مقدار پیشفرض همان مقدار تعریفشده در queue_type یا ram
در صورت عدم تنظیم آن است.
sql_schema_multihost: true | false
توجه درباره این گزینه: در نسخه 25.10 تغییر نام یافت. تعیین میکند که
آیا از database.md#singlehost-or-multihost|طرح SQL چندمیزبانه
استفاده شود. تمام طرحها در
https://github.com/processone/ejabberd/tree/26.07/sql قرار دارند.
دو طرح در دسترس هستند. طرح قدیمی singlehost یک دامنه XMPP را در یک
پایگاه داده ejabberd ذخیره میکند. طرح multihost میتواند چندین دامنه
XMPP را در یک پایگاه داده ejabberd مدیریت کند. طرح multihost هنگام
ارائه خدمات به چندین دامنه XMPP و/یا تغییر دامنهها از وقت به وقت
ارجح است. این از نیاز به مدیریت چندین پایگاه داده و پیچیدگیهای
تغییرات پیکربندی جلوگیری میکند. مقدار پیشفرض به فلگ
--enable-sql-schema-multihost در
../../admin/install/source.md#configure|./configure که در زمان
کامپایل تنظیم میشود بستگی دارد.
sql_server: Host | IP Address | ODBC Connection String | Unix Socket
Path
توجه درباره این گزینه: در نسخه 24.06 بهبود یافت. نام میزبان یا آدرس
IP سرور SQL. برای sql_type های mssql یا odbc میتواند یک رشته اتصال
ODBC نیز باشد. هنگامی که sql_type برابر با mysql یا pgsql است،
میتواند مسیر یک سوکت دامنه یونیکس باشد که اینگونه بیان میشود:
"unix:/path/to/socket". مقدار پیشفرض localhost است.
sql_ssl: true | false
توجه درباره این گزینه: در نسخه 20.03 بهبود یافت. تعیین میکند که آیا
از اتصالات رمزگذاریشده SSL به سرور SQL استفاده شود. این گزینه تنها
برای MySQL، MS SQL و PostgreSQL در دسترس است. مقدار پیشفرض false
است.
sql_ssl_cafile: Path
مسیر فایلی با گواهیهای ریشه CA که برای تأیید اتصالات SQL استفاده
میشود. به این معنی که گزینههای sql_ssl و sql_ssl_verify روی true
تنظیم شدهاند. هیچ مقدار پیشفرضی وجود ندارد که به این معنی است که
تأیید گواهی غیرفعال است. این گزینه برای MS SQL تأثیری ندارد.
sql_ssl_certfile: Path
مسیر فایل گواهی که برای اتصالات SSL به سرور SQL استفاده میشود. به
این معنی که گزینه sql_ssl روی true تنظیم شده است. هیچ مقدار پیشفرضی
وجود ندارد که به این معنی است که ejabberd هیچ گواهی کلاینتی به سرور
SQL ارائه نمیدهد. این گزینه برای MS SQL تأثیری ندارد.
sql_ssl_verify: true | false
تعیین میکند که آیا اتصال SSL به سرور SQL در برابر گواهیهای ریشه CA
تعریفشده در گزینه sql_ssl_cafile تأیید شود. به این معنی که گزینه
sql_ssl روی true تنظیم شده است. این گزینه برای MS SQL تأثیری ندارد.
مقدار پیشفرض false است.
sql_start_interval: timeout()
زمان انتظار قبل از تلاش مجدد برای بازیابی اتصال SQL ناموفق. مقدار
پیشفرض 30 ثانیه است.
sql_type: mssql | mysql | odbc | pgsql | sqlite
نوع اتصال SQL. پیشفرض odbc است.
sql_username: Username
نام کاربری برای احراز هویت SQL. مقدار پیشفرض ejabberd است.
trusted_proxies: all | [Network1, Network2, ...]
مشخص میکند که هنگامی که یک درخواست HTTP حاوی هدر X-Forwarded-For
است، کدام پروکسیها مورد اعتماد هستند. میتوانید all را برای اجازه
دادن به تمام پروکسیها مشخص کنید، یا فهرستی از IPها را احتمالاً با
ماسک مشخص کنید. مقدار پیشفرض یک فهرست خالی است. با استفاده از این
گزینه میتوانید IP واقعی درخواست را برای اهداف مدیریتی یا پیکربندی
امنیتی بدانید (برای مثال با استفاده از mod_fail2ban). مهم: پروکسی
باید پیکربندی شود که هدر X-Forwarded-For را تنظیم کند اگر این گزینه
را فعال کنید، در غیر این صورت کلاینت میتواند آن را خودش تنظیم کند و
در نتیجه مقدار IP برای قوانین امنیتی در ejabberd قابل اعتماد نیست.
update_sql_schema: true | false
توجه درباره این گزینه: در نسخه 24.06 بهروز شد. به ejabberd اجازه
میدهد طرح SQL را در پایگاه دادههای MySQL، PostgreSQL و SQLite بهروز
کند. این گزینه در ejabberd نسخه 23.10 اضافه شد و از نسخه 24.06 به
طور پیشفرض فعال است. مقدار پیشفرض true است.
update_sql_schema_timeout: timeout()
توجه درباره این گزینه: در نسخه 24.07 اضافه شد. زمان اختصاصیافته به
کوئریهای بهروزرسانی طرح SQL. مقدار پیشفرض 5 دقیقه است.
use_cache: true | false
فعال یا غیرفعال کردن کش. پیشفرض true است. چندین ماژول گزینه مشابهی
دارند؛ و برخی بخشهای هسته ejabberd نیز از گزینههای مشابه پشتیبانی
میکنند، به auth_use_cache، oauth_use_cache، router_use_cache و
sm_use_cache مراجعه کنید.
validate_stream: true | false
تعیین میکند که آیا هر بسته XML ورودی طبق طرحهای افزونههای
پشتیبانیشده XMPP اعتبارسنجی شود. هشدار: این اعتبارسنجی تنها برای
استفاده توسط توسعهدهندگان کلاینت در نظر گرفته شده است - آن را در
محیط تولید فعال نکنید. مقدار پیشفرض false است.
version: string()
این گزینه میتواند برای تنظیم نسخه سفارشی ejabberd استفاده شود که
توسط بخشهای مختلف ejabberd استفاده میشود، برای مثال توسط ماژول
mod_version. مقدار پیشفرض در زمان کامپایل از سیستم کنترل نسخه
زیربنایی به دست میآید.
websocket_origin: ignore | URL
این گزینه اعتبارسنجی هدر Origin را برای محافظت در برابر اتصالات از
دامنههای دیگر غیر از آنچه در فایل پیکربندی مشخص شده فعال میکند. به
این ترتیب، لود بالانسر لایه پایینتر میتواند برای یک پیادهسازی خاص
ejabberd انتخاب شود در حالی که یک اتصال WebSocket امن همچنان فراهم
میشود. مقدار پیشفرض ignore است. یک مثال از مقدار URL میتواند
"https://test.example.org:8081" باشد.
websocket_ping_interval: timeout()
زمان بین پینگهای ارسالشده از سرور به کلاینت (برای این منظور از
پینگهای سطح پروتکل WebSocket استفاده میشود) برای زنده نگه داشتن
اتصال را تعریف میکند. اگر کلاینت به دو پینگ متوالی پاسخ ندهد، اتصال
بستهشده تلقی میشود. مقدار 0 میتواند برای غیرفعال کردن این قابلیت
استفاده شود. این گزینه باعث میشود سرور پینگها را تنها برای اتصالاتی
که از پروتکل مطابق با RFC استفاده میکنند ارسال کند. برای اتصالات با
سبک قدیمیتر، سرور انتظار دارد که از پینگهای فضای خالی برای این
منظور استفاده شود. مقدار پیشفرض 60 ثانیه است.
websocket_timeout: timeout()
مدت زمان بدون هیچ ارتباطی که پس از آن اتصال بسته میشود. مقدار
پیشفرض 300 ثانیه است.
ماژولها (MODULES)
این بخش گزینههای ماژولهای ejabberd 26.07 را توضیح میدهد. ماژولهایی که
در این نسخه تغییر کردهاند با 🟠 مشخص شدهاند.
mod_adhoc
def:ad-hoc command
: دستوری که میتواند توسط یک کلاینت XMPP با استفاده از XEP-0050 اجرا
شود.
این ماژول XEP-0050: Ad-Hoc Commands را پیادهسازی میکند. یک ماژول کمکی
است و تنها توسط برخی از ماژولهای دیگر مورد نیاز است.
گزینههای موجود:
report_commands_node: true | false
آیتم Commands را در Service Discovery فراهم میکند. مقدار
پیشفرض: false.
mod_adhoc_api
توجه درباره این گزینه: در نسخه 25.03 اضافه شده است.
اجرای (def:API commands) در یک کلاینت XMPP با استفاده از XEP-0050:
Ad-Hoc Commands. این ماژول به mod_adhoc (برای اجرای دستورات) نیاز دارد،
و استفاده از mod_disco (برای کشف دستورات) را توصیه میکند.
گزینههای موجود:
default_version: integer() | string()
نسخه API مورد استفاده. اگر نسخه ejabberd تنظیم شود، از آخرین
نسخه API که در آن نسخه (def:c2s) ejabberd موجود بوده استفاده
میکند. به عنوان مثال، تنظیم "24.06" در این گزینه معادل 2 است.
مقدار پیشفرض آخرین نسخه است.
مثال:
acl:
admin:
user: jan@localhost
api_permissions:
"adhoc commands":
from: mod_adhoc_api
who: admin
what:
- "[tag:roster]"
- "[tag:session]"
- stats
- status
modules:
mod_adhoc_api:
default_version: 2
mod_admin_extra
این ماژول دستورات مدیریتی اضافی فراهم میکند.
جزئیات برخی دستورات:
ban_account API: این دستور تمام نشستهای متصل حساب کاربری را از سرور قطع
میکند. همچنین رمز عبور آنها را به یک رمز تصادفی تغییر میدهد تا دیگر
نتوانند وارد شوند مگر اینکه مدیر سرور رمز عبور آنها را مجدداً تغییر دهد.
امکان تعریف دلیل مسدودسازی وجود دارد. رمز عبور جدید نیز شامل دلیل و
تاریخ و زمان مسدودسازی است. مثالی در زیر آمده است.
push_roster API (و push_roster_all API): فایل roster باید در صورت
استفاده از Windows، در دایرکتوری نصب ejabberd قرار گیرد: C:/Program
Files/ejabberd یا مشابه آن. در صورت استفاده از سیستمعامل دیگر، فایل را
در همان دایرکتوری که فایلهای .beam نصب شدهاند قرار دهید. در زیر یک فایل
roster نمونه آمده است.
srg_create API: اگر میخواهید نام گروه را با فاصله وارد کنید، از
کاراکترهای "' و '" برای مشخص کردن شروع و پایان نام استفاده کنید. مثالی
در زیر آمده است.
این ماژول گزینهای ندارد.
مثالها:
با این پیکربندی، vCardها فقط با دستورات mod_admin_extra قابل تغییر
هستند:
acl:
adminextraresource:
- resource: "modadminextraf8x,31ad"
access_rules:
vcard_set:
- allow: adminextraresource
modules:
mod_admin_extra: {}
mod_vcard:
access_set: vcard_set
محتوای فایل roster برای push_roster API:
[{<<"bob">>, <<"example.org">>, <<"workers">>, <<"Bob">>},
{<<"mart">>, <<"example.org">>, <<"workers">>, <<"Mart">>},
{<<"Rich">>, <<"example.org">>, <<"bosses">>, <<"Rich">>}].
با این فراخوانی، نشستهای حساب محلی با JID boby@example.org قطع
میشوند و رمز عبور آن به چیزی شبیه
BANNED_ACCOUNT—20080425T21:45:07—2176635—Spammed_rooms تغییر مییابد
ejabberdctl vhost example.org ban_account boby "Spammed rooms"
فراخوانی srg_create API با استفاده از کوتیشنهای دوتایی و تکی:
ejabberdctl srg_create g1 example.org "'Group number 1'" this_is_g1 g1
برچسبهای API:
../../developer/ejabberd-api/admin-tags.md#accounts|accounts,
../../developer/ejabberd-api/admin-tags.md#erlang|erlang,
../../developer/ejabberd-api/admin-tags.md#last|last,
../../developer/ejabberd-api/admin-tags.md#private|private,
../../developer/ejabberd-api/admin-tags.md#purge|purge,
../../developer/ejabberd-api/admin-tags.md#roster|roster,
../../developer/ejabberd-api/admin-tags.md#session|session,
../../developer/ejabberd-api/admin-tags.md#shared_roster_group|shared_roster_group,
../../developer/ejabberd-api/admin-tags.md#stanza|stanza,
../../developer/ejabberd-api/admin-tags.md#statistics|statistics,
../../developer/ejabberd-api/admin-tags.md#vcard|vcard
mod_admin_update_sql
از این ماژول میتوان برای تبدیل پایگاه داده SQL موجود از طرحواره
تکمیزبانه به چندمیزبانه استفاده کرد. برای جزئیات بخش
database.md#singlehost-or-multihost|Singlehost or Multihost را بررسی
کنید. توجه داشته باشید که تنها MS SQL، MySQL و PostgreSQL پشتیبانی
میشوند. پس از بارگذاری ماژول از update_sql API استفاده کنید.
این ماژول گزینهای ندارد.
mod_announce
این ماژول به کاربران پیکربندیشده امکان میدهد اعلانها را پخش کنند و پیام
روز (MOTD) را تنظیم کنند. کاربران پیکربندیشده میتوانند این اعمال را با
یک کلاینت XMPP، یا از طریق Ad-Hoc Commands یا ارسال پیام به JIDهای خاص
انجام دهند. دستورات معادل API نیز موجود هستند.
توجه
این ماژول در استقرارهای بزرگ میتواند منابع زیادی مصرف کند زیرا ممکن
است پیامهای زیادی پخش کند. این ماژول باید برای نمونههای ejabberd با
صدها هزار کاربر غیرفعال شود.
برای ارسال اعلانها با استفاده از XEP-0050: Ad-Hoc Commands، این ماژول
به mod_adhoc (برای اجرای دستورات) نیاز دارد، و استفاده از mod_disco
(برای کشف دستورات) را توصیه میکند.
برای ارسال اعلانها از طریق ارسال پیام به JIDهای خاص، JIDهای مقصد به شرح
زیر هستند:
• example.org/announce/all: پیام را به تمام کاربران ثبتشده در آن
vhost ارسال میکند. اگر کاربر آنلاین باشد و به چندین منبع متصل باشد،
تنها منبع با بالاترین اولویت پیام را دریافت میکند. اگر کاربر ثبتشده
متصل نباشد، پیام به صورت آفلاین ذخیره میشود با این فرض که ذخیرهسازی
آفلاین (مراجعه کنید به mod_offline) فعال باشد.
• example.org/announce/online: پیام را به تمام کاربران متصل ارسال
میکند. اگر کاربر آنلاین باشد و به چندین منبع متصل باشد، تمام منابع
پیام را دریافت میکنند.
• example.org/announce/motd: پیام روز (MOTD) را تنظیم میکند که هنگام
ورود به کاربران ارسال میشود. همچنین پیام را به تمام کاربران متصل
ارسال میکند (مشابه announce/online).
• example.org/announce/motd/update: پیام روز (MOTD) را تنظیم میکند که
هنگام ورود به کاربران ارسال میشود. این گزینه پیام را به هیچ کاربر
متصل فعلی ارسال نمیکند.
• example.org/announce/motd/delete: پیام روز (MOTD) موجود را با ارسال
یک پیام به این JID حذف میکند.
JIDهای مقصد مشابهی برای اعمال بر تمام میزبانهای مجازی در ejabberd وجود
دارد:
• example.org/announce/all-hosts/all: ارسال به تمام حسابهای ثبتشده
• example.org/announce/all-hosts/online: ارسال به نشستهای آنلاین
• example.org/announce/all-hosts/motd: تنظیم MOTD و ارسال به کاربران
آنلاین
• example.org/announce/all-hosts/motd/update: بهروزرسانی MOTD
• example.org/announce/all-hosts/motd/delete: حذف MOTD
گزینههای موجود:
access: AccessName
این گزینه مشخص میکند چه کسی مجاز به ارسال اعلانها و تنظیم پیام
روز است. مقدار پیشفرض none است (یعنی هیچکس قادر به ارسال چنین
پیامهایی نیست).
cache_life_time: timeout()
مشابه گزینه سطح بالای cache_life_time، اما فقط برای این ماژول
اعمال میشود.
cache_missed: true | false
مشابه گزینه سطح بالای cache_missed، اما فقط برای این ماژول
اعمال میشود.
cache_size: pos_integer() | infinity
مشابه گزینه سطح بالای cache_size، اما فقط برای این ماژول اعمال
میشود.
db_type: mnesia | sql
مشابه گزینه سطح بالای default_db، اما فقط برای این ماژول اعمال
میشود.
use_cache: true | false
مشابه گزینه سطح بالای use_cache، اما فقط برای این ماژول اعمال
میشود.
برچسبهای API:
../../developer/ejabberd-api/admin-tags.md#announce|announce
mod_antispam
توجه درباره این گزینه: در نسخه 25.07 اضافه شده است.
پیامهای هرزنامه و درخواستهای اشتراک دریافتی از سرورهای راه دور را بر
اساس فهرستهای بلوک بلادرنگ (RTBL)، فهرستهای JID های اسپمر شناختهشده
و/یا URLهای ذکرشده در پیامهای هرزنامه فیلتر میکند. ترافیک طبقهبندیشده
به عنوان هرزنامه با یک خطا رد میشود (و یک پیام [info] ثبت میگردد) مگر
اینکه فرستنده در حضور گیرنده مشترک باشد.
گزینههای موجود:
access_spam: Access
قانون دسترسی که کنترل میکند چه حسابهایی ممکن است پیامهای
هرزنامه دریافت کنند. اگر این قانون برای یک گیرنده مشخص allow
برگرداند، پیامهای هرزنامه برای آن گیرنده رد نمیشوند. مقدار
پیشفرض none است، که به این معنی است که همه گیرندگان تحت بررسی
فیلتر هرزنامه قرار میگیرند.
cache_size: pos_integer()
حداکثر تعداد JID هایی که به دلیل ارسال URLهای هرزنامه در حافظه
پنهان ذخیره میشوند. اگر این محدودیت بیش از حد شود،
کماستفادهترین ورودیها از حافظه پنهان حذف میشوند. تنظیم این
گزینه روی 0 ویژگی ذخیرهسازی موقت را غیرفعال میکند. توجه داشته
باشید که برای هر میزبان مجازی حافظههای پنهان جداگانهای استفاده
میشود و این حافظههای پنهان در بین گرههای خوشه توزیع نمیشوند.
مقدار پیشفرض 10000 است.
rtbl_services: [Service]
یک سرویس RTBL را برای دریافت دامنههای مسدود، مانند آنچه توسط
xmppbl.org ارائه میشود، پرسوجو میکند. لطفاً توجه داشته باشید که
در حال حاضر این گزینه فقط از یک سرویس در آن فهرست پشتیبانی
میکند. برای مسدود کردن هرزنامه و سوءاستفاده در کانالهای MUC، در
حال حاضر از mod_muc_rtbl استفاده کنید. اگر فقط میزبان ارائه
شود، نام گرههای پیشفرض فرض میشوند. اگر نام گره با
spam_source_domains متفاوت باشد، میتوانید نام گره سفارشی را با
گزینه spam_source_domains_node تنظیم کنید. مقدار پیشفرض یک
فهرست خالی از سرویسها است.
مثال:
rtbl_services:
- pubsub.server1.localhost:
spam_source_domains_node: actual_custom_pubsub_node
spam_domains_file: none | Path
مسیر یک فایل متنی ساده حاوی فهرستی از دامنههای هرزنامه
شناختهشده، یک دامنه در هر خط. پیامها و درخواستهای اشتراک
ارسالشده از یکی از دامنههای فهرستشده در صورتی که فرستنده در
لیست مخاطبین گیرنده نباشد به عنوان هرزنامه طبقهبندی میشوند. این
فهرست دامنهها با فهرست بازیابیشده توسط یک میزبان RTBL در صورت
وجود ادغام میشود. از یک مسیر مطلق یا کلیدواژه از پیش تعریفشده
@CONFIG_PATH@ استفاده کنید اگر فایل در دایرکتوری پیکربندی موجود
است. مقدار پیشفرض none است.
spam_dump_file: false | true | Path
مسیر فایلی برای ذخیره پیامهای مسدودشده. از یک مسیر مطلق یا
کلیدواژه از پیش تعریفشده @LOG_PATH@ استفاده کنید تا لاگها در
همان مکان سایر فایلهای لاگ ejabberd ذخیره شوند. اگر روی false
تنظیم شود، استانزاها را ذخیره نمیکند، که پیشفرض است. اگر روی
true تنظیم شود، در "@LOG_PATH@/spam_dump_@HOST@.log" ذخیره
میکند.
spam_jids_file: none | Path
مسیر یک فایل متنی ساده حاوی فهرستی از JID های اسپمر شناختهشده،
یک JID در هر خط. پیامها و درخواستهای اشتراک ارسالشده از یکی از
JID های فهرستشده به عنوان هرزنامه طبقهبندی میشوند. پیامهای حاوی
حداقل یکی از JID های فهرستشده نیز به عنوان هرزنامه طبقهبندی
میشوند. علاوه بر این، JID فرستنده در حافظه پنهان ذخیره میشود تا
ترافیک آینده از آن JID نیز به عنوان هرزنامه طبقهبندی شود. از یک
مسیر مطلق یا کلیدواژه از پیش تعریفشده @CONFIG_PATH@ استفاده
کنید اگر فایل در دایرکتوری پیکربندی موجود است. مقدار پیشفرض
none است.
spam_urls_file: none | Path
مسیر یک فایل متنی ساده حاوی فهرستی از URLهایی که در متن پیامهای
هرزنامه ذکر شدهاند. پیامهای حاوی حداقل یکی از URLهای فهرستشده
به عنوان هرزنامه طبقهبندی میشوند. علاوه بر این، JID فرستنده در
حافظه پنهان ذخیره میشود تا ترافیک آینده از آن JID نیز به عنوان
هرزنامه طبقهبندی شود. از یک مسیر مطلق یا کلیدواژه از پیش
تعریفشده @CONFIG_PATH@ استفاده کنید اگر فایل در دایرکتوری
پیکربندی موجود است. مقدار پیشفرض none است.
whitelist_domains_file: none | Path
مسیر یک فایل حاوی فهرستی از دامنههایی که باید از مسدود شدن معاف
شوند، یک دامنه در هر خط. اگر دامنهای در spam_domains_file یا
واقعبینانهتر در دامنهای ارسالشده توسط یک میزبان RTBL (گزینه
rtbl_services را ببینید) باشد، این دامنه نادیده گرفته میشود و
استانزاهای آن مسدود نمیشوند. از یک مسیر مطلق یا کلیدواژه از پیش
تعریفشده @CONFIG_PATH@ استفاده کنید اگر فایل در دایرکتوری
پیکربندی موجود است. مقدار پیشفرض none است.
مثال:
modules:
mod_antispam:
rtbl_services:
- xmppbl.org
spam_jids_file: "@CONFIG_PATH@/spam_jids.txt"
spam_dump_file: "@LOG_PATH@/spam/host-@HOST@.log"
mod_auth_fast 🟠
توجه درباره این گزینه: در نسخه 26.07 بهبود یافته است.
این ماژول پشتیبانی از XEP-0484: Fast Authentication Streamlining Tokens
را اضافه میکند که به کاربران اجازه میدهد با استفاده از توکنهای
خودمدیریتی احراز هویت کنند.
گزینههای موجود:
db_type 🟠: mnesia | sql
توجه درباره این گزینه: در نسخه 26.07 بهبود یافته است. مشابه
گزینه سطح بالای default_db اما فقط برای این ماژول اعمال میشود.
token_lifetime: timeout()
مدت زمانی که توکنها نگهداری میشوند، اندازهگیریشده از زمان ایجاد
آنها. مقدار پیشفرض ۳۰ روز تنظیم شده است.
token_refresh_age: timeout()
این زمان سن توکنی را که واجد شرایط تجدید خودکار است تعیین
میکند. مقدار پیشفرض ۱ روز تنظیم شده است.
مثال:
modules:
mod_auth_fast:
token_lifetime: 14days
mod_avatar
هدف این ماژول رسیدگی به کلاینتهای XMPP قدیمی و مدرنی است که آواتار
ارسال میکنند. این فرآیند در XEP-0398: User Avatar to vCard-Based
Avatars Conversion توضیح داده شده است.
همچنین، این ماژول از تبدیل بین فرمتهای تصویر آواتار به صورت آنی
پشتیبانی میکند.
این ماژول به mod_vcard، mod_vcard_xupdate و mod_pubsub وابسته است.
گزینههای موجود:
convert: {From: To}
قوانین تبدیل تصویر را تعریف میکند: فرمت در From به فرمت در To
تبدیل میشود. مقدار From میتواند default هم باشد که یک قانون
همهچیز-مطابقت است. توجه: فهرست فرمتهای پشتیبانیشده در زمان
کامپایل بسته به کتابخانههای تصویر نصبشده در سیستم تشخیص داده
میشود.
مثال:
convert:
webp: jpg
default: png
rate_limit: Number
هر JID دادهشده را بر اساس تعداد آواتارهایی که میتواند در دقیقه
تبدیل کند محدود میکند. این برای محافظت از سرور در برابر DoS
تبدیل تصویر است. مقدار پیشفرض 10 است.
mod_block_strangers
این ماژول هر پیامی که از یک موجودیت ناشناخته میآید را مسدود و ثبت
میکند. اگر یک موجودیت نویسنده در لیست مخاطبین شما نباشد، میتوانید اجازه
دهید این ماژول پیام را رد کند و/یا ثبت کند. به طور پیشفرض پیام از آن
موجودیت دریافت نخواهید کرد. اگر میخواهید پیامهای هرزنامه را رد کنید این
ماژول را فعال کنید.
گزینههای موجود:
access: AccessName
این گزینه قرار است زمانی استفاده شود که allow_local_users و
allow_transports کافی نیستند. این یک قانون دسترسی است که در آن
deny به معنای رد شدن استانزا است؛ استثنایی وجود دارد اگر گزینه
captcha پیکربندی شده باشد. و allow به این معنا است که فرستنده
در لیست سفید قرار دارد و استانزا عبور خواهد کرد. مقدار پیشفرض
none است، که به این معنی است که هیچ چیز در لیست سفید قرار
ندارد.
allow_local_users: true | false
این گزینه مشخص میکند که آیا افراد ناشناس از همان میزبان محلی
باید پذیرفته شوند یا نه. مقدار پیشفرض true است.
allow_transports: true | false
اگر روی true تنظیم شود و JID برخی سرورها در لیست مخاطبین کاربر
باشد، پیامهای هر کاربر از آن سرور حتی در صورت عدم وجود اشتراک
پذیرفته میشوند. مقدار پیشفرض true است.
captcha: true | false
آیا در پاسخ به درخواستهای اشتراک حضور ورودی از افراد ناشناس
چالشهای CAPTCHA ایجاد شود. همچنین بخش basic.md#captcha|CAPTCHA
از راهنمای پیکربندی را ببینید. مقدار پیشفرض false است.
drop: true | false
این گزینه مشخص میکند که آیا پیامهای افراد ناشناس باید رد شوند
یا نه. مقدار پیشفرض true است.
log: true | false
این گزینه مشخص میکند که آیا پیامهای افراد ناشناس باید (به عنوان
پیام info) در ejabberd.log ثبت شوند. مقدار پیشفرض false است.
mod_blocking
این ماژول XEP-0191: Blocking Command را پیادهسازی میکند.
این ماژول به mod_privacy وابسته است که در آن همه پیکربندیها انجام
میشود.
این ماژول هیچ گزینهای ندارد.
mod_bosh
این ماژول XMPP over BOSH را همانطور که در XEP-0124 و XEP-0206 تعریف شده
پیادهسازی میکند. BOSH مخفف Bidirectional-streams Over Synchronous HTTP
است. این امکان را فراهم میکند که اتصالات طولانیمدت مورد نیاز XMPP را از
طریق پروتکل HTTP شبیهسازی کنید. در عمل، این ماژول امکان استفاده از XMPP
را در مرورگر بدون پشتیبانی WebSocket فراهم میکند و به طور کلی راهی برای
استفاده از XMPP در عبور از پروکسی HTTP است.
گزینههای موجود:
cache_life_time: timeout()
مشابه گزینه سطح بالای cache_life_time اما فقط برای این ماژول
اعمال میشود.
cache_missed: true | false
مشابه گزینه سطح بالای cache_missed اما فقط برای این ماژول اعمال
میشود.
cache_size: pos_integer() | infinity
مشابه گزینه سطح بالای cache_size اما فقط برای این ماژول اعمال
میشود.
json: true | false
این گزینه هیچ تأثیری ندارد.
max_concat: pos_integer() | infinity
این گزینه تعداد استانزاهایی که سرور در یک درخواست bosh ارسال
میکند را محدود میکند. مقدار پیشفرض unlimited است.
max_inactivity: timeout()
این گزینه حداکثر دوره عدم فعالیت را تعریف میکند. مقدار پیشفرض
30 ثانیه است.
max_pause: pos_integer()
حداکثر مدت توقف موقت جلسه (بر حسب ثانیه) که یک کلاینت میتواند
درخواست کند را نشان میدهد. مقدار پیشفرض 120 است.
prebind: true | false
اگر فعال شود، کلاینت میتواند بدون گذر از احراز هویت جلسه ایجاد
کند. اساساً یک جلسه جدید با احراز هویت ناشناس ایجاد میکند. مقدار
پیشفرض false است.
queue_type: ram | file
مشابه گزینه سطح بالای queue_type اما فقط برای این ماژول اعمال
میشود.
ram_db_type: mnesia | sql | redis
مشابه گزینه سطح بالای default_ram_db اما فقط برای این ماژول
اعمال میشود.
use_cache: true | false
مشابه گزینه سطح بالای use_cache اما فقط برای این ماژول اعمال
میشود.
مثال:
listen:
-
port: 5222
module: ejabberd_c2s
-
port: 5443
module: ejabberd_http
request_handlers:
/bosh: mod_bosh
modules:
mod_bosh: {}
mod_caps
این ماژول XEP-0115: Entity Capabilities را پیادهسازی میکند. هدف اصلی
این ماژول ارائه قابلیت PEP است (به mod_pubsub مراجعه کنید).
گزینههای موجود:
cache_life_time: timeout()
همانند گزینه سطح بالای cache_life_time است، اما فقط برای این
ماژول اعمال میشود.
cache_missed: true | false
همانند گزینه سطح بالای cache_missed است، اما فقط برای این ماژول
اعمال میشود.
cache_size: pos_integer() | infinity
همانند گزینه سطح بالای cache_size است، اما فقط برای این ماژول
اعمال میشود.
db_type: mnesia | sql
همانند گزینه سطح بالای default_db است، اما فقط برای این ماژول
اعمال میشود.
use_cache: true | false
همانند گزینه سطح بالای use_cache است، اما فقط برای این ماژول
اعمال میشود.
mod_carboncopy
این ماژول XEP-0280: Message Carbons را پیادهسازی میکند. این ماژول
پیامها را در تمام منابع (دستگاههای) متصل کاربر پخش میکند.
این ماژول هیچ گزینهای ندارد.
mod_client_state
این ماژول امکان صفبندی انواع خاصی از استانزاها را فراهم میکند، زمانی که
کلاینت نشان میدهد که کاربر در حال حاضر بهطور فعال از کلاینت استفاده
نمیکند (به XEP-0352: Client State Indication مراجعه کنید). این قابلیت
میتواند پهنای باند و منابع را صرفهجویی کند.
یک استانزا از صف حذف میشود اگر بهطور مؤثر توسط یک استانزای جدید منسوخ
شود (مثلاً یک استانزای حضور جدید، استانزای قدیمی از همان کلاینت را
جایگزین میکند). صف خالی میشود اگر استانزایی برسد که در صف قرار نمیگیرد،
یا اگر اندازه صف به حد معینی برسد (در حال حاضر ۱۰۰ استانزا)، یا اگر
کلاینت دوباره فعال شود.
گزینههای موجود:
queue_chat_states: true | false
اعلانهای وضعیت چت «مستقل» (همانطور که در XEP-0085: Chat State
Notifications تعریف شده) را در حالت عدم فعالیت کلاینت در صف
قرار میدهد. مقدار پیشفرض true است.
queue_pep: true | false
اعلانهای PEP را در حالت عدم فعالیت کلاینت در صف قرار میدهد.
هنگامی که صف خالی میشود، فقط جدیدترین اعلان یک گره PEP مشخص
تحویل داده میشود. مقدار پیشفرض true است.
queue_presence: true | false
در حالت عدم فعالیت کلاینت، استانزاهای حضور که نشاندهنده در
دسترس بودن یا نبودن هستند را در صف قرار میدهد. مقدار پیشفرض
true است.
mod_configure
توجه درباره این گزینه: در نسخه ۲۵.۱۰ بهبود یافته است.
این ماژول قابلیتهای پیکربندی کارگزار را با استفاده از XEP-0030: Service
Discovery و XEP-0050: Ad-Hoc Commands فراهم میکند:
• فهرست و کشف اتصالات s2s خروجی، نشستهای کلاینت آنلاین و تمام حسابهای
کاربری ثبتشده
• اکثر دستورات ad-hoc تعریفشده در XEP-0133: Service Administration
• دستورات ad-hoc سفارشی اضافی مخصوص ejabberd
دستورات ad-hoc از XEP-0133 که رفتار متفاوتی نسبت به XEP دارند:
• get-user-roster: به جای آیتمهای فهرست مخاطبان که کلاینت نمیتواند
نمایش دهد، فیلدهای استاندارد برمیگرداند
آن دستورات ad-hoc از XEP-0133 که کلاینت اجراکننده دستور را در پاسخ شامل
نمیشوند:
• get-active-users-num
• get-idle-users-num
• get-active-users
• get-idle-users
آن دستورات ad-hoc از XEP-0133 که پیادهسازی نشدهاند:
• edit-blacklist
• edit-whitelist
• edit-admin
این ماژول به mod_adhoc (برای اجرای دستورات) نیاز دارد، و استفاده از
mod_disco (برای کشف دستورات) توصیه میشود.
توجه داشته باشید که تمام دستورات ad-hoc پیادهسازیشده توسط این ماژول،
معادل یک دستور API دارند که میتوانید با استفاده از mod_adhoc_api یا هر
رابط API دیگری اجرا کنید.
گزینههای موجود:
access: AccessName
توجه درباره این گزینه: در نسخه ۲۵.۰۳ اضافه شده است. این گزینه
تعیین میکند که کدام قانون دسترسی برای کنترل اینکه چه کسی مجاز
به دسترسی به قابلیتهای ارائهشده توسط این ماژول است، استفاده
میشود. مقدار پیشفرض configure است.
مثال:
acl:
admin:
user: sun@localhost
access_rules:
configure:
allow: admin
modules:
mod_configure:
access: configure
mod_conversejs
توجه درباره این گزینه: در نسخه ۲۵.۰۷ بهبود یافته است.
این ماژول یک صفحه ساده برای کلاینت وب XMPP به نام Converse ارائه میدهد.
برای استفاده از این ماژول، علاوه بر افزودن آن به بخش modules، باید آن
را در listen → ejabberd_http →
listen-options.md#request_handlers|request_handlers نیز فعال کنید.
مطمئن شوید که mod_bosh یا listen.md#ejabberd_http_ws|ejabberd_http_ws
حداقل در یک request_handlers فعال باشد.
وقتی conversejs_css و conversejs_script روی auto تنظیم شدهاند، بهطور
پیشفرض به کلاینت عمومی Converse اشاره میکنند.
وقتی این ماژول در modules فعال میشود، بهطور خودکار یک request handler و
لینک در WebAdmin اضافه میکند. .
این ماژول از نسخه ejabberd 21.12 در دسترس است.
گزینههای موجود:
bosh_service_url: auto | BoshURL
آدرس URL سرویس BOSH که Converse میتواند به آن متصل شود.
کلیدواژه @HOST@ با نام میزبان مجازی واقعی جایگزین میشود. اگر
روی auto تنظیم شود، URL اولین request handler BOSH پیکربندیشده
را میسازد. مقدار پیشفرض auto است.
conversejs_css: auto | URL
آدرس URL فایل CSS مربوط به Converse. کلیدواژه @HOST@ با نام
میزبان جایگزین میشود. مقدار پیشفرض auto است.
conversejs_options: {Name: Value}
توجه درباره این گزینه: در نسخه ۲۲.۰۵ اضافه شده است. گزینههای
اضافی را برای ارسال به Converse مشخص میکند. به پیکربندی
Converse مراجعه کنید. فقط مقادیر boolean، عدد صحیح و رشته
پشتیبانی میشوند؛ لیستها پشتیبانی نمیشوند.
conversejs_plugins: [Filename]
فهرستی از فایلهای محلی اضافی که به عنوان اسکریپت در صفحه اصلی
گنجانده میشوند. لطفاً مطمئن شوید که این فایلها در مسیر مشخصشده
در گزینه conversejs_resources ، در زیردایرکتوری plugins/ موجود
هستند. توجه داشته باشید که libsignal فقط برای رمزگذاری OMEMO در
Converse نسخه ۱۳ یا پایینتر لازم است؛ Converse نسخه ۱۴ از
libomemo استفاده میکند و آن را شامل میشود. اگر از کلاینت عمومی
Converse استفاده میکنید، "libsignal" با URL کتابخانه عمومی
جایگزین میشود. مقدار پیشفرض [] است.
conversejs_resources: Path
توجه درباره این گزینه: در نسخه ۲۲.۰۵ اضافه شده است. مسیر محلی
به فایلهای Converse. اگر تنظیم نشود، از کلاینت عمومی Converse
استفاده خواهد شد.
conversejs_script: auto | URL
آدرس URL اسکریپت اصلی Converse. کلیدواژه @HOST@ با نام میزبان
جایگزین میشود. مقدار پیشفرض auto است.
default_domain: Domain
یک دامنه را به عنوان پیشفرض برای JIDهای کاربری مشخص میکند.
کلیدواژه @HOST@ با نام میزبان جایگزین میشود. مقدار پیشفرض
@HOST@ است.
websocket_url: auto | WebSocketURL
یک آدرس URL WebSocket که Converse میتواند به آن متصل شود.
کلیدواژه @HOST@ با نام میزبان مجازی واقعی جایگزین میشود. اگر
روی auto تنظیم شود، URL اولین request handler WebSocket
پیکربندیشده را میسازد. مقدار پیشفرض auto است.
مثالها:
تنظیم دستی آدرس URL WebSocket و استفاده از کلاینت عمومی Converse:
listen:
-
port: 5280
module: ejabberd_http
request_handlers:
/bosh: mod_bosh
/websocket: ejabberd_http_ws
/conversejs: mod_conversejs
modules:
mod_bosh: {}
mod_conversejs:
websocket_url: "ws://@HOST@:5280/websocket"
میزبانی محلی Converse و تشخیص خودکار آدرسهای URL WebSocket و
Converse:
listen:
-
port: 443
module: ejabberd_http
tls: true
request_handlers:
/websocket: ejabberd_http_ws
/conversejs: mod_conversejs
modules:
mod_conversejs:
conversejs_resources: "/home/ejabberd/conversejs-x.y.z/package/dist"
conversejs_plugins: ["libsignal-protocol.min.js"]
# File path is: /home/ejabberd/conversejs-x.y.z/package/dist/plugins/libsignal-protocol.min.js
پیکربندی برخی گزینههای اضافی برای Converse
modules:
mod_conversejs:
websocket_url: auto
conversejs_options:
auto_away: 30
clear_cache_on_logout: true
i18n: "pt"
locked_domain: "@HOST@"
message_archiving: always
theme: dracula
mod_delegation
این ماژول پیادهسازی XEP-0355: Namespace Delegation است. تاکنون تنها
حالت مدیریتی (admin mode) پیادهسازی شده است. واگذاری فضای نام
(Namespace delegation) به سرویسهای خارجی اجازه میدهد تا IQ با فضای نام
مشخصی را مدیریت کنند. این قابلیت ممکن است برای سرویس PEP خارجی به کار
رود.
هشدار
مسئله امنیتی: واگذاری فضای نام به کامپوننتها دسترسی به دادههای حساس
را فراهم میکند، بنابراین مجوزها باید با احتیاط و تنها در صورت
اعتماد به کامپوننت اعطا شوند.
توجه
این ماژول مکمل mod_privilege است اما میتواند به صورت مستقل نیز
استفاده شود.
گزینههای موجود:
namespaces: {Namespace: Options}
اگر میخواهید فضاهای نام را به یک کامپوننت واگذار کنید، آنها را
در این گزینه مشخص کرده و به یک قانون دسترسی مرتبط سازید.
Options عبارتند از:
access: AccessName
این گزینه تعیین میکند کدام کامپوننتها برای واگذاری فضای نام
مجاز هستند. مقدار پیشفرض none است.
filtering: Attributes
فهرست ویژگیها. در حال حاضر استفاده نمیشود.
مثالها:
مطمئن شوید که یک فضای نام را به چندین سرویس به صورت همزمان واگذار
نمیکنید. همانطور که در مثال زیر نشان داده شده، برای اینکه کامپوننت
sat-pubsub.example.org به درستی کار کند، ماژول mod_pubsub را
غیرفعال کنید.
access_rules:
external_pubsub:
allow: external_component
external_mam:
allow: external_component
acl:
external_component:
server: sat-pubsub.example.org
modules:
mod_delegation:
namespaces:
urn:xmpp:mam:1:
access: external_mam
http://jabber.org/protocol/pubsub:
access: external_pubsub
mod_disco
این ماژول پشتیبانی از XEP-0030: Service Discovery را اضافه میکند. با
فعال بودن این ماژول، سرویسهای موجود در کارگزار شما توسط کلاینتهای XMPP
قابل کشف هستند.
گزینههای موجود:
extra_domains: [Domain, ...]
با این گزینه میتوانید فهرستی از دامنههای اضافی را مشخص کنید که
به فهرست آیتمهای Service Discovery افزوده میشوند. مقدار پیشفرض
یک فهرست خالی است.
name: Name
نام کارگزار در Service Discovery. این نام تنها توسط کلاینتهای
XMPP خاص نمایش داده میشود. مقدار پیشفرض ejabberd است.
server_info: [Info, ...]
اطلاعات اضافی درباره کارگزار را مشخص میکند، همانطور که در
XEP-0157: Contact Addresses for XMPP Services توضیح داده شده
است. هر عنصر Info در فهرست از گزینههای زیر ساخته میشود:
modules: all | [Module, ...]
مقدار میتواند کلیدواژه all باشد که در آن صورت اطلاعات در
همه سرویسها گزارش میشود، یا فهرستی از ماژولهای ejabberd که
در آن صورت اطلاعات تنها برای سرویسهای ارائه شده توسط آن
ماژولها مشخص میشود.
name: Name
نام فیلد var که تعریف خواهد شد. برای نامهای استاندارد شده
به XEP-0157 مراجعه کنید.
urls: [URI, ...]
فهرستی از URIهای تماس، مانند URLهای HTTP، URIهای XMPP و
موارد مشابه.
مثال:
server_info:
-
modules: all
name: abuse-addresses
urls: ["mailto:abuse@shakespeare.lit"]
-
modules: [mod_muc]
name: "Web chatroom logs"
urls: ["http://www.example.org/muc-logs"]
-
modules: [mod_disco]
name: feedback-addresses
urls:
- http://shakespeare.lit/feedback.php
- mailto:feedback@shakespeare.lit
- xmpp:feedback@shakespeare.lit
-
modules:
- mod_disco
- mod_vcard
name: admin-addresses
urls:
- mailto:xmpp@shakespeare.lit
- xmpp:admins@shakespeare.lit
mod_fail2ban
این ماژول آدرسهای IP که نشانههای مخرب نشان میدهند را مسدود میکند. در
حال حاضر تنها شکستهای احراز هویت C2S شناسایی میشوند.
برخلاف برنامه مستقل، mod_fail2ban پس از گذشت مدتی از اولین شکست یا در
صورت احراز هویت موفق، سابقه شکستهای احراز هویت را پاک میکند. همچنین به
جای مسدود کردن ساده ترافیک شبکه، یک پیام خطای توصیفی برای کلاینت ارسال
میکند.
هشدار
نباید از این ماژول پشت یک پروکسی یا load balancer استفاده کنید.
ejabberd شکستها را از دیدگاه load balancer میبیند و هنگامی که
آستانه شکستهای احراز هویت به حد مجاز رسید، تمام اتصالات از load
balancer را رد خواهد کرد. استفاده از این ماژول پشت یک پروکسی
میتواند باعث شود همه کاربران شما از ejabberd قفل شوند.
گزینههای موجود:
access: AccessName
یک قانون دسترسی برای لیست سفید کردن آدرسهای IP یا شبکهها مشخص
میکند. اگر قانون برای یک آدرس IP خاص allow برگرداند، آن آدرس
هرگز مسدود نخواهد شد. AccessName باید از نوع ip باشد. مقدار
پیشفرض none است.
c2s_auth_ban_lifetime: timeout()
مدت زمان مسدودیت IP ناشی از تعداد زیاد شکستهای احراز هویت C2S.
مقدار پیشفرض 1 ساعت است.
c2s_max_auth_failures: Number
تعداد شکستهای احراز هویت C2S برای فعالسازی مسدودیت IP. مقدار
پیشفرض 20 است.
برچسبهای API:
../../developer/ejabberd-api/admin-tags.md#accounts|accounts
mod_host_meta
توجه درباره این گزینه: در نسخه 22.05 اضافه شده است.
این ماژول فایلهای کوچک host-meta را همانطور که در XEP-0156: Discovering
Alternative XMPP Connection Methods توضیح داده شده، ارائه میدهد.
برای استفاده از این ماژول، علاوه بر افزودن آن به بخش modules، باید آن
را در listen → ejabberd_http →
listen-options.md#request_handlers|request_handlers نیز فعال کنید.
توجه داشته باشید که این ماژول تنها زمانی کار میکند که
listen.md#ejabberd_http|ejabberd_http دارای listen-options.md#tls|tls
فعال باشد.
گزینههای موجود:
bosh_service_url: undefined | auto | BoshURL
URL سرویس BOSH برای اعلام. کلیدواژه @HOST@ با نام واقعی میزبان
مجازی جایگزین میشود. اگر روی auto تنظیم شود، URL اولین
کنترلکننده درخواست BOSH پیکربندی شده را میسازد. مقدار پیشفرض
auto است.
websocket_url: undefined | auto | WebSocketURL
URL WebSocket برای اعلام. کلیدواژه @HOST@ با نام واقعی میزبان
مجازی جایگزین میشود. اگر روی auto تنظیم شود، URL اولین
کنترلکننده درخواست WebSocket پیکربندی شده را میسازد. مقدار
پیشفرض auto است.
مثال:
listen:
-
port: 443
module: ejabberd_http
tls: true
request_handlers:
/bosh: mod_bosh
/websocket: ejabberd_http_ws
/.well-known/host-meta: mod_host_meta
/.well-known/host-meta.json: mod_host_meta
modules:
mod_bosh: {}
mod_host_meta:
bosh_service_url: "https://@HOST@:5443/bosh"
websocket_url: "wss://@HOST@:5443/websocket"
mod_http_api
این ماژول یک رابط ReST برای فراخوانی دستورات
../../developer/ejabberd-api/index.md|ejabberd API با استفاده از
دادههای JSON فراهم میکند.
برای استفاده از این ماژول، علاوه بر افزودن آن به بخش modules، باید آن
را در listen → ejabberd_http →
listen-options.md#request_handlers|request_handlers نیز فعال کنید.
برای استفاده از نسخه API خاص N، هنگام تعریف مسیر URL در
request_handlers، یک vN اضافه کنید. به عنوان مثال: /api/v2:
mod_http_api.
برای اجرای یک دستور، یک درخواست POST به URL مربوطه ارسال کنید:
http://localhost:5280/api/COMMAND-NAME
گزینههای موجود:
default_version: integer() | string()
توجه درباره این گزینه: در نسخه 24.12 اضافه شده است. تعیین میکند
که هنگامی که هیچ نسخهای در مسیر URL مشخص نشده، از کدام نسخه API
استفاده شود. اگر یک نسخه ejabberd تنظیم شود، از آخرین نسخه API
که در آن نسخه ejabberd موجود بوده استفاده خواهد کرد. به عنوان
مثال، تنظیم "24.06" در این گزینه به معنای 2 است. مقدار پیشفرض
آخرین نسخه است.
مثال:
listen:
-
port: 5280
module: ejabberd_http
request_handlers:
/api: mod_http_api
modules:
mod_http_api:
default_version: 2
mod_http_fileserver
توجه درباره این گزینه: بهبود docroot در نسخه ۲۶.۰۱.
این ماژول ساده، فایلها را از دیسک محلی از طریق HTTP ارائه میدهد.
گزینههای موجود:
accesslog: Path
فایلی برای ثبت دسترسیها با فرمت مشابه Apache. اگر این گزینه
مشخص نشود، هیچ گزارشی ثبت نخواهد شد.
content_types: {Extension: Type}
نگاشت پسوند به نوع محتوا را مشخص میکند. چندین نوع محتوا از پیش
تعریف شدهاند. با این گزینه میتوانید تعاریف جدید اضافه کنید یا
تعاریف موجود را تغییر دهید. مقادیر پیشفرض عبارتند از:
مثال:
content_types:
.avi: video/avi
.bmp: image/bmp
.bz2: application/x-bzip2
.css: text/css
.gif: image/gif
.gz: application/x-gzip
.html: text/html
.ico: image/vnd.microsoft.icon
.jar: application/java-archive
.jpeg: image/jpeg
.jpg: image/jpeg
.js: text/javascript
.json: application/json
.m4a: audio/mp4
.map: application/json
.mp3: audio/mpeg
.mp4: video/mp4
.mpeg: video/mpeg
.mpg: video/mpeg
.ogg: application/ogg
.pdf: application/pdf
.png: image/png
.rtf: application/rtf
.svg: image/svg+xml
.tiff: image/tiff
.ttf: font/ttf
.txt: text/plain
.wav: audio/wav
.wasm: application/wasm
.webp: image/webp
.woff: font/woff
.woff2: font/woff2
.xml: application/xml
.xpi: application/x-xpinstall
.xul: application/vnd.mozilla.xul+xml
.xz: application/x-xz
.zip: application/zip
custom_headers: {Name: Value}
سرآیندهای سفارشی HTTP که باید در تمام پاسخها گنجانده شوند را
مشخص میکند. بهطور پیشفرض هیچ سرآیند سفارشی وجود ندارد.
default_content_type: Type
نوع محتوا برای پسوندهای ناشناخته را مشخص میکند. مقدار پیشفرض
application/octet-stream است.
directory_indices: [Index, ...]
یک یا چند فایل فهرست دایرکتوری را مشخص میکند، مشابه متغیر
DirectoryIndex در Apache. هنگامی که یک درخواست HTTP به جای فایل
معمولی به یک دایرکتوری میرسد، این فایلهای فهرست به ترتیب جستجو
میشوند و اولین مورد یافتشده بازگردانده میشود. مقدار پیشفرض یک
لیست خالی است.
docroot: PathDir | {PathURL, PathDir}
توجه درباره این گزینه: بهبود یافته در نسخه ۲۶.۰۱. دایرکتوری
برای ارائه فایلها، یا نگاشتی از چندین مسیر URL (طبق مشخصات
listen-options.md#request_handlers|request_handlers) و
دایرکتوریهای متناظر آنها. این یک گزینه اجباری است.
مثال:
listen:
-
port: 5280
module: ejabberd_http
request_handlers:
/pub/content: mod_http_fileserver
/share: mod_http_fileserver
/: mod_http_fileserver
modules:
mod_http_fileserver:
docroot:
/pub/content: /var/service/www
/share: /usr/share/javascript
/: /var/www
must_authenticate_with: [{Username, Hostname}, ...]
فهرست حسابهایی که مجاز به استفاده از این سرویس هستند. مقدار
پیشفرض: [].
مثالها:
این پیکربندی نمونه، فایلها را از دایرکتوری محلی /var/www در آدرس
http://example.org:5280/pub/content/ ارائه میدهد. در این مثال یک
نوع محتوای جدید ogg تعریف شده، png بازتعریف شده و تعریف jpg حذف شده
است:
listen:
-
port: 5280
module: ejabberd_http
request_handlers:
/pub/content: mod_http_fileserver
modules:
mod_http_fileserver:
docroot: /var/www
accesslog: /var/log/ejabberd/access.log
directory_indices:
- index.html
- main.htm
custom_headers:
X-Powered-By: Erlang/OTP
X-Fry: "It's a widely-believed fact!"
content_types:
.ogg: audio/ogg
.png: image/png
default_content_type: text/html
mod_http_upload
توجه درباره این گزینه: content_types در نسخه ۲۶.۰۱ اضافه شد.
این ماژول امکان درخواست مجوز برای آپلود فایل از طریق HTTP را فراهم
میکند، طبق XEP-0363: HTTP File Upload. اگر درخواست پذیرفته شود، کلاینت
یک URL برای آپلود فایل و یک URL دیگر برای دانلود آن فایل دریافت میکند.
برای استفاده از این ماژول، باید در listen → ejabberd_http →
listen-options.md#request_handlers|request_handlers فعالسازی شود.
گزینههای موجود:
access: AccessName
این گزینه قانون دسترسی را برای محدود کردن افرادی که مجاز به
استفاده از سرویس آپلود HTTP هستند تعریف میکند. مقدار پیشفرض
local است. اگر قانون دسترسی با آن نام وجود نداشته باشد، هیچ
کاربری مجاز به استفاده از سرویس نخواهد بود.
append_module_config 🟠: {UploadHost: Options}
توجه درباره این گزینه: در نسخه ۲۶.۰۷ اضافه شد. چند گزینه خاص را
به یک هاست آپلود مشخص که پیشتر در گزینه hosts ماژول
mod_http_upload تعریف شده، اضافه میکند. در حال حاضر فقط name و
vcard میتوانند اینجا تعریف شوند. این مشابه گزینه سطح بالای
append_host_config است، با این تفاوت که روی گزینههای این ماژول
اعمال میشود.
مثال:
modules:
mod_http_upload:
hosts:
- service1.@HOST@
- service2.@HOST@
name: "Service General"
append_module_config:
service1.localhost:
name: "Service 1"
service2.example.net:
name: "Service 2"
content_types: {Extension: Type}
توجه درباره این گزینه: در نسخه ۲۶.۰۱ اضافه شد. نگاشت پسوند به
نوع محتوا را مشخص میکند، مشابه گزینه content_types در
mod_http_fileserver.
custom_headers: {Name: Value}
این گزینه فیلدهای سرآیند اضافی را که باید در تمام پاسخهای HTTP
گنجانده شوند مشخص میکند. بهطور پیشفرض هیچ سرآیند سفارشی وجود
ندارد.
dir_mode: Permission
این گزینه بیتهای مجوز دایرکتوری docroot و هر دایرکتوری ایجادشده
در هنگام آپلود فایل را تعریف میکند. بیتها به صورت عدد مبنای هشت
(مراجعه کنید به صفحه راهنمای chmod(1)) داخل گیومه دوتایی مشخص
میشوند. به عنوان مثال: "0755". مقدار پیشفرض تعریفنشده است، یعنی
هیچ مجوز صریحی تنظیم نخواهد شد.
docroot: Path
فایلهای آپلودشده در زیر دایرکتوری مشخصشده (به عنوان مسیر مطلق)
با این گزینه ذخیره میشوند. کلیدواژه @HOME@ با دایرکتوری خانگی
کاربری که ejabberd را اجرا میکند جایگزین میشود، و کلیدواژه
@HOST@ با نام هاست مجازی. مقدار پیشفرض "@HOME@/upload" است.
external_secret: Text
این گزینه امکان واگذاری تمام پردازشهای HTTP Upload به یک سرور
HTTP جداگانه را فراهم میکند. هر دو سرور ejabberd و سرور HTTP
باید این رمز مشترک را داشته باشند و دقیقاً طبق مشخصات Prosody’s
mod_http_upload_external: Implementation عمل کنند. هیچ مقدار
پیشفرضی وجود ندارد.
file_mode: Permission
این گزینه بیتهای مجوز فایلهای آپلودشده را تعریف میکند. بیتها به
صورت عدد مبنای هشت (مراجعه کنید به صفحه راهنمای chmod(1)) داخل
گیومه دوتایی مشخص میشوند. به عنوان مثال: "0644". مقدار پیشفرض
تعریفنشده است، یعنی هیچ مجوز صریحی تنظیم نخواهد شد.
get_url: URL
این گزینه بخش ابتدایی URLهای GET که برای دانلود فایلها استفاده
میشوند را مشخص میکند. مقدار پیشفرض undefined است. هنگامی که این
گزینه undefined باشد، مقدار آن با مقدار put_url یکسان تنظیم
میشود. کلیدواژه @HOST@ با نام هاست مجازی جایگزین میشود. توجه:
اگر درخواستهای GET توسط این ماژول پردازش شوند، get_url باید با
put_url مطابقت داشته باشد. تنظیم آن به مقدار متفاوت تنها زمانی
منطقی است که از یک وبسرور خارجی یا mod_http_fileserver برای
ارائه فایلهای آپلودشده استفاده شود.
host
منسوخ شده. به جای آن از hosts استفاده کنید.
hosts: [Host, ...]
این گزینه شناسههای Jabber سرویس را تعریف میکند. اگر گزینه hosts
مشخص نشود، تنها شناسه Jabber، نام هاست مجازی با پیشوند
"upload." خواهد بود. کلیدواژه @HOST@ با نام هاست مجازی واقعی
جایگزین میشود.
jid_in_url: node | sha1
وقتی این گزینه روی node تنظیم شود، شناسه گره JID کاربر (یعنی
نام کاربری) در URLهای GET و PUT تولیدشده توسط mod_http_upload
گنجانده میشود. در غیر این صورت، به جای آن یک هش SHA-1 از JID
ساده کاربر گنجانده میشود. مقدار پیشفرض sha1 است.
max_size: Size
این گزینه حداکثر حجم قابل قبول فایل را محدود میکند. باید یک عدد
بایت (بزرگتر از صفر) یا infinity مشخص شود. مقدار پیشفرض
104857600 است.
name: Name
نام سرویس در Service Discovery. مقدار پیشفرض "HTTP File Upload"
است. توجه داشته باشید که این نام تنها توسط برخی کلاینتهای XMPP
نمایش داده میشود.
put_url: URL
این گزینه بخش ابتدایی URLهای PUT که برای آپلود فایل استفاده
میشوند را مشخص میکند. کلیدواژه @HOST@ با نام هاست مجازی جایگزین
میشود. و @HOST_URL_ENCODE@ با نام هاست کدگذاریشده برای URL
جایگزین میشود، که برای هاستهای مجازی حاوی کاراکترهای غیرلاتین
مفید است. توجه: هاستهای مجازی مختلف نمیتوانند از یک URL PUT
یکسان استفاده کنند. مقدار پیشفرض "https://@HOST@:5443/upload"
است.
rm_on_unregister: true | false
این گزینه مشخص میکند که آیا فایلهای آپلودشده توسط یک کاربر
هنگام لغو ثبتنام آن کاربر باید حذف شوند یا خیر. مقدار پیشفرض
true است.
secret_length: Length
این گزینه طول رشته تصادفی گنجاندهشده در URLهای GET و PUT
تولیدشده توسط mod_http_upload را تعریف میکند. حداقل طول 8
کاراکتر است، اما توصیه میشود مقدار بزرگتری انتخاب شود. مقدار
پیشفرض 40 است.
service_url
منسوخ شده.
thumbnail: true | false
این گزینه مشخص میکند که آیا ejabberd باید تصاویر کوچک
(thumbnail) از تصاویر آپلودشده ایجاد کند یا خیر. اگر یک تصویر
کوچک ایجاد شود، یک عنصر که حاوی دانلود و
برخی متادیتا است، همراه با پاسخ PUT بازگردانده میشود. مقدار
پیشفرض false است.
vcard: vCard
یک vCard سفارشی برای سرویس که توسط برخی کلاینتهای XMPP در
Service Discovery نمایش داده میشود. مقدار vCard یک نگاشت YAML
است که از نمایش XML یک vCard ساخته شده. از آنجا که این نمایش
فاقد ویژگی (attribute) است، نگاشت ساده است.
مثال:
# This XML representation of vCard:
#
# Conferences
#
#
# Elm Street
#
#
#
# is translated to:
vcard:
fn: Conferences
adr:
-
work: true
street: Elm Street
مثال:
listen:
-
port: 5443
module: ejabberd_http
tls: true
request_handlers:
/upload: mod_http_upload
modules:
mod_http_upload:
docroot: /ejabberd/upload
put_url: "https://@HOST@:5443/upload"
mod_http_upload_quota
این ماژول پشتیبانی از سهمیه (quota) را برای mod_http_upload اضافه
میکند.
این ماژول به mod_http_upload وابسته است.
گزینههای موجود:
access_hard_quota: AccessName
این گزینه تعریف میکند که کدام قانون دسترسی برای تعیین «سهمیه
سخت» (hard quota) برای JIDهای مطابق استفاده میشود. آن قانون
باید برای هر JIDی که قرار است محدودیت سهمیه داشته باشد، یک عدد
مثبت برگرداند. این عدد، مقدار مگابایتی است که کاربر مربوطه
میتواند آپلود کند. هنگامی که این آستانه از حد تجاوز کند،
ejabberd قدیمیترین فایلهای آپلود شده توسط آن کاربر را حذف میکند
تا مصرف دیسک آنها برابر یا کمتر از سهمیه نرم (soft quota) مشخص
شده شود (همچنین گزینه access_soft_quota را ببینید). مقدار
پیشفرض hard_upload_quota است.
access_soft_quota: AccessName
این گزینه تعریف میکند که کدام قانون دسترسی برای تعیین «سهمیه
نرم» (soft quota) برای JIDهای مطابق استفاده میشود. آن قانون
باید برای هر JIDی که قرار است محدودیت سهمیه داشته باشد، یک عدد
مثبت بر حسب مگابایت برگرداند. برای جزئیات بیشتر توضیحات گزینه
access_hard_quota را ببینید. مقدار پیشفرض soft_upload_quota
است.
max_days: Days
اگر عددی بزرگتر از صفر مشخص شود، هر فایل (و دایرکتوری) که
قدیمیتر از این تعداد روز باشد، یک بار در روز از زیردایرکتوریهای
دایرکتوری docroot حذف میشود. مقدار پیشفرض infinity است.
مثالها:
توجه داشته باشید که برای استفاده از قابلیت سهمیه، لازم نیست
گزینههای access_hard_quota و access_soft_quota را مشخص کنید.
میتوانید از نامهای پیشفرض استفاده کنید و فقط قوانین دسترسی مانند
این مثال را تعریف کنید:
shaper_rules:
soft_upload_quota:
1000: all # MiB
hard_upload_quota:
1100: all # MiB
modules:
mod_http_upload: {}
mod_http_upload_quota:
max_days: 100
mod_invites 🟠
توجه در مورد این گزینه: بهبودیافته در نسخه 26.07.
این ماژول دعوتنامه کاربر و ایجاد حساب کاربری را برای ایجاد لینکهای خارج
از باند (out-of-band) جهت عضویت دیگران در شبکه XMPP و برقراری اشتراک
متقابل فراهم میکند. این ماژول XEP-0379: Pre-Authenticated Roster
Subscription، XEP-0401: Ad-hoc Account Invitation Generation و
XEP-0445: Pre-Authenticated In-Band Registration را پیادهسازی میکند.
این دعوتنامهها به صورت URI های XMPP، از طریق دستورات ad-hoc یا دستورات
API (مانند API generate_invite و API generate_invite_with_username)
ایجاد میشوند و سپس قرار است به صورت خارج از باند ارسال شوند.
کاربر دریافتکننده باید یک کلاینت نصب کرده باشد که از این دعوتنامهها
پشتیبانی کند. از آنجا که این موضوع به یک مانع رایج برای استقرار آسان
تبدیل شده است، این ماژول با یک پارامتر صفحه فرود اختیاری ارائه میشود که
میتواند یا یک سرویس خارجی مانند نصب easy-xmpp-invitation، یک سرویس شخص
ثالث مانند JoinJabber یا برای راحتی یک سرویس داخلی باشد. این صفحه فرود
سپس گیرنده را در راهاندازی یک کلاینت و در صورت نیاز ایجاد یک حساب
کاربری راهنمایی میکند.
برای استفاده از قابلیت صفحه فرود داخلی، باید landing_page را روی auto
یا یک قالب URL مانند https://{{ host }}/invites/{{ invite.token }}
تنظیم کنید، اگر تنظیمات سرور شما شامل یک پروکسی معکوس (reverse proxy)
است. علاوه بر این، باید این ماژول را به عنوان یک هندلر برای شنونده
ejabberd_http متصل کنید، همانطور که در مثال زیر نشان داده شده است.
برای راحتی، اکنون یک صفحه شروع نیز در هر جایی که mod_invites را در
هندلر ejabberd_http متصل میکنید گنجانده شده است. این صفحه شروع به افراد
اجازه میدهد با وارد کردن نام کاربری و رمز عبور خود، دعوتنامه تولید
کنند. به همین دلیل URL باید توسط HTTPS محافظت شود. مورد استفاده اصلی
زمانی است که افراد فقط کلاینتهایی دارند که از تولید دعوتنامه به صورت
بومی پشتیبانی نمیکنند.
اگر ترجیح میدهید از یک سرویس خارجی استفاده کنید، landing_page را روی
چیزی مانند http://{{ host }}:8080/easy-xmpp-invites/#{{
invite.uri|strip_protocol }} یا https://invites.joinjabber.org/#{{
invite.uri|strip_protocol }} تنظیم کنید.
گزینههای موجود:
access_create_account: Access Rule Name
این نام یک قانون دسترسی است که مشخص میکند چه کسی مجاز به ایجاد
دعوتنامههای create account است. مقدار پیشفرض none است، یعنی
هیچکس قادر به ایجاد چنین دعوتنامههایی نیست. علاوه بر این، این
گزینه بر دعوتنامههای roster اعمال میشود و اگر کاربر فرستنده
توسط این قانون مجاز باشد، ثبتنام درونباند (IBR) را نیز
امکانپذیر میکند. کاربران از ACL admin همیشه مجاز به ایجاد این
دعوتنامهها هستند.
مثال:
mod_invites:
access_create_account: local
db_type: mnesia | sql
همانند گزینه سطح بالای default_db، اما فقط برای این ماژول اعمال
میشود.
landing_page: none | auto | LandingPageURLTemplate
آیا برای دعوتنامههایی که ایجاد میشوند از یک صفحه فرود استفاده
شود یا خیر. در صورت استفاده از یک قالب URL، این میتواند خارجی
یا داخلی باشد. متغیرهای قالب شامل host، invite.token و
invite.uri هستند، همچنین فیلترهایی تعریف شدهاند که مهمترین آنها
strip_protocol است. این یک مثال است: http://{{ host
}}:8080/easy-xmpp-invites/#{{ invite.uri|strip_protocol }}.
برای راحتی میتوانید auto را انتخاب کنید و هندلر ejabberd_http
برای mod_invites برای ساختن URL صفحه فرود استفاده میشود. مقدار
پیشفرض none است.
max_invites: pos_integer() | infinity
حداکثر تعداد دعوتنامههای create account که یک کاربر منفرد
میتواند ایجاد کند. کاربرانی که با ACL admin مطابقت دارند از این
محدودیت معاف هستند. علاوه بر این، استفاده از دعوتنامههای roster
برای ایجاد حساب کاربری را محدود میکند. مقدار پیشفرض infinity
است.
site_name: Site Name
یک نام قابل خواندن توسط انسان برای سایت شما. مثلاً "My Beautiful
Laundrette". در قالبهای صفحه فرود استفاده میشود.
templates_dir: Path
دایرکتوری حاوی قالبها و فایلهای ایستا که برای صفحه فرود و فرم
ثبتنام وب استفاده میشوند. فقط در صورتی باید تنظیم شود که
بخواهید مجموعه قالبهای خود یا فهرست برنامههای توصیهشده خود را
ارسال کنید.
token_expire_seconds: pos_integer()
تعداد ثانیهها تا انقضای توکن. مقدار پیشفرض 432000 است (یعنی پنج
روز: 5 * 24 * 60 * 60).
webchat_url: none | auto | Webchat URL
توجه در مورد این گزینه: اضافهشده در نسخه 26.03. URL به یک
کلاینت وبچت. در هنگام ثبتنام دستی از طریق فرم وب، این گزینه
برای شروع کار توصیه میشود. اگر auto انتخاب شود، mod_conversejs
از بخش شنوندگان انتخاب میشود. مقدار پیشفرض auto است.
مثالها:
پیکربندی پایه با صفحه فرود اما بدون ایجاد حساب کاربری، فقط
دعوتنامههای roster:
listen:
-
port: 5281
module: ejabberd_http
request_handlers:
/invites: mod_invites
# [...]
modules:
mod_invites:
landing_page: auto
برای اینکه فقط کاربران admin بتوانند دعوتنامههای create account
ایجاد کنند و ثبتنام درونباند معمولی را غیرفعال کنید، پیکربندی زیر
را خواهید داشت:
acl:
admin:
- user: "my_admin_user@example.com"
access_rules:
register:
allow: admin
modules:
mod_invites:
landing_page: auto
mod_register:
allow_modules:
- mod_invites
اگر میخواهید همه کاربران شما بتوانند دعوتنامههای create account
ارسال کنند، به جای آن سرور خود را اینگونه پیکربندی کنید. توجه داشته
باشید که نام قوانین دسترسی فقط مثال هستند و شما آزاد هستید آنها را
تغییر دهید.
acl:
local:
user_regexp: ""
access_rules:
create_account_invite:
allow: local
modules:
mod_invites:
access_create_account: create_account_invite
landing_page: auto
mod_register:
allow_modules:
- mod_invites
mod_jidprep
این ماژول به کلاینتهای XMPP اجازه میدهد از سرور بخواهند که یک JID را
طبق قوانین مشخصشده در RFC 6122: XMPP Address Format نرمالسازی کند. این
ممکن است برای کلاینتهایی در محیطهای محدود خاص، یا برای اهداف آزمایشی
مفید باشد.
گزینههای موجود:
access: AccessName
این گزینه تعریف میکند که کدام قانون دسترسی برای کنترل اینکه چه
کسی مجاز به استفاده از این سرویس است استفاده میشود. مقدار
پیشفرض local است.
mod_last
این ماژول پشتیبانی از XEP-0012: Last Activity را اضافه میکند. میتوان از
آن برای کشف آخرین زمان دسترسی یک کاربر قطعشده به سرور، دانستن آخرین
فعالیت یک کاربر متصل روی سرور، یا پرسوجو از مدت زمان فعالیت سرور
ejabberd استفاده کرد.
گزینههای موجود:
cache_life_time: timeout()
همانند گزینه سطح بالای cache_life_time، اما فقط برای این ماژول
اعمال میشود.
cache_missed: true | false
همانند گزینه سطح بالای cache_missed، اما فقط برای این ماژول
اعمال میشود.
cache_size: pos_integer() | infinity
همانند گزینه سطح بالای cache_size، اما فقط برای این ماژول اعمال
میشود.
db_type: mnesia | sql
همانند گزینه سطح بالای default_db، اما فقط برای این ماژول اعمال
میشود.
use_cache: true | false
همانند گزینه سطح بالای use_cache، اما فقط برای این ماژول اعمال
میشود.
mod_legacy_auth
این ماژول XEP-0078: Non-SASL Authentication را پیادهسازی میکند.
توجه
این نوع احراز هویت در سال ۲۰۰۸ منسوخ شد و احتمالاً نیازی به این
ماژول ندارید مگر اینکه چیزی مانند رباتهای جبر قدیمی داشته باشید.
این ماژول هیچ گزینهای ندارد.
mod_mam
این ماژول XEP-0313: Message Archive Management و XEP-0441: Message
Archive Management Preferences را پیادهسازی میکند. کلاینتهای XMPP
سازگار میتوانند از آن برای ذخیره تاریخچه چت خود در سرور استفاده کنند.
توجه
پشتیبان Mnesia برای mod_mam توصیه نمیشود: محدود به ۲ گیگابایت است و
اغلب هنگام رسیدن به این محدودیت خراب میشود. پشتیبان SQL توصیه
میشود. به طور خاص، برای سرورهای کوچک SQLite انتخاب ترجیحی است زیرا
پیکربندی آن بسیار آسان است.
گزینههای موجود:
access_preferences: AccessName
این قانون دسترسی تعریف میکند که چه کسی مجاز به تغییر تنظیمات
MAM است. مقدار پیشفرض all است.
archive_muc_as_mucsub: true | false
توجه در مورد این گزینه: اضافهشده در نسخه 25.10. هنگامی که این
گزینه فعال است، پیامهای groupchat دریافتی برای کاربرانی که
اشتراک mucsub در اتاقی دارند که پیام از آن نشأت گرفته، پس از
تبدیل به پیامهای رویداد mucsub بایگانی میشوند. مقدار پیشفرض
false است.
assume_mam_usage: true | false
این گزینه تعیین میکند که کد مدیریت جریان ejabberd (به
mod_stream_mgmt مراجعه کنید) چگونه پیامهای تأییدنشده را هنگام
از دست رفتن اتصال مدیریت کند. معمولاً چنین پیامهایی یا برگشت
داده میشوند یا مجدداً ارسال میشوند. با این حال، اگر این گزینه
روی true تنظیم شود، هیچکدام از این کارها برای پیامهایی که در
بایگانی MAM کاربر ذخیره شدهاند انجام نمیشود. در این حالت،
ejabberd فرض میکند که آن پیامها از بایگانی بازیابی خواهند شد.
مقدار پیشفرض false است.
cache_life_time: timeout()
همانند گزینه سطح بالای cache_life_time، اما فقط برای این ماژول
اعمال میشود.
cache_missed: true | false
همانند گزینه سطح بالای cache_missed، اما فقط برای این ماژول
اعمال میشود.
cache_size: pos_integer() | infinity
همانند گزینه سطح بالای cache_size، اما فقط برای این ماژول اعمال
میشود.
clear_archive_on_room_destroy: true | false
آیا هنگام نابودی بایگانی پیام یک اتاق (به mod_muc مراجعه کنید)،
آن بایگانی حذف شود. مقدار پیشفرض true است.
compress_xml: true | false
هنگامی که فعال است، پیامهای جدید اضافهشده به بایگانیها با
استفاده از یک الگوریتم فشردهسازی سفارشی فشرده میشوند. این
قابلیت فقط با پشتیبانهای SQL کار میکند. مقدار پیشفرض false است.
db_type: mnesia | sql
همانند گزینه سطح بالای default_db، اما فقط برای این ماژول اعمال
میشود.
default: always | never | roster
این گزینه سیاست پیشفرض برای تاریخچه چت را تعریف میکند. هنگامی
که always تنظیم شود، هر پیام چت ذخیره میشود. با roster فقط
تاریخچه چت با مخاطبین موجود در roster کاربر ذخیره میشود. و
never تاریخچه چت را به طور کامل غیرفعال میکند. توجه داشته باشید
که یک کلاینت میتواند سیاست خود را از طریق دستورات پروتکل تغییر
دهد. مقدار پیشفرض never است.
request_activates_archiving: true | false
اگر مقدار true باشد، تا زمانی که کلاینت کاربر یک درخواست MAM
صادر نکند، هیچ پیامی برای آن کاربر ذخیره نمیشود، صرف نظر از
مقدار گزینه default. پس از اینکه سرور یک درخواست دریافت کرد،
پیامهای آن کاربر طبق معمول بایگانی میشوند. مقدار پیشفرض false
است.
use_cache: true | false
همانند گزینه سطح بالای use_cache، اما فقط برای این ماژول اعمال
میشود.
user_mucsub_from_muc_archive: true | false
هنگامی که این گزینه غیرفعال است، برای هر مشترک منفرد یک پیام
mucsub جداگانه ذخیره میشود. با فعال بودن این گزینه، هنگامی که
کاربر بایگانی مجازی mucsub را دریافت میکند، پیامها از
بایگانیهای muc تولید میشوند. مقدار پیشفرض false است.
برچسبهای API: ../../developer/ejabberd-api/admin-tags.md#mam|mam،
../../developer/ejabberd-api/admin-tags.md#purge|purge
mod_matrix_gw
توجه درباره این گزینه: بهبودیافته در نسخه ۲۵.۰۸.
دروازه Matrix. از نسخههای اتاق ۹، ۱۰ و ۱۱ از ejabberd 25.03 پشتیبانی
میکند؛ از نسخههای اتاق ۴ و بالاتر از ejabberd 25.07؛ از نسخه اتاق ۱۲
(اتاقهای hydra) از ejabberd 25.08. برای استفاده از این ماژول،
Erlang/OTP 25 یا بالاتر لازم است. این ماژول از ejabberd 24.02 در دسترس
است.
گزینههای موجود:
host: Host
این گزینه شناسههای Jabber سرویس را تعریف میکند. اگر گزینه host
مشخص نشود، شناسه Jabber همان نام میزبان مجازی با پیشوند
"matrix." خواهد بود. کلیدواژه @HOST@ با نام واقعی میزبان مجازی
جایگزین میشود.
key: string()
مقدار کلید امضای matrix، به صورت base64.
key_name: string()
نام کلید امضای matrix.
leave_timeout: integer()
تأخیر به ثانیه بین خروج کاربر از اتاق MUC و ارسال رویداد leave
در Matrix.
matrix_domain: Domain
یک دامنه در فدراسیون Matrix مشخص میکند. کلیدواژه @HOST@ با نام
میزبان جایگزین میشود. مقدار پیشفرض @HOST@ است.
matrix_id_as_jid: true | false
اگر روی true تنظیم شود، تمام بستههایی که تحویل آنها از طریق
اتصال سرور به سرور XMPP ناموفق است، با ترجمه شناسه Jabber
user@matrixdomain.tld به شناسه کاربری Matrix
@user:matrixdomain.tld به دروازه Matrix هدایت میشوند. وقتی روی
false تنظیم شود، پیامها باید صریحاً به شناسه Jabber سرویس دروازه
matrix ارسال شوند تا به سرور Matrix راه دور هدایت گردند. در این
صورت، برای ارسال پیام به کاربر Matrix @user:matrixdomain.tld،
کلاینت باید پیامی به JID
user%matrixdomain.tld@matrix.myxmppdomain.tld ارسال کند، که در
آن matrix.myxmppdomain.tld همان JID سرویس دروازه است که توسط
گزینه host تعیین میشود. مقدار پیشفرض false است.
notary_servers: [Server, ...]
فهرستی از سرورهای notary.
مثال:
listen:
-
port: 8448
module: ejabberd_http
tls: true
request_handlers:
"/_matrix": mod_matrix_gw
modules:
mod_matrix_gw:
key_name: "key1"
key: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
matrix_id_as_jid: true
mod_metrics
این ماژول رویدادها را به پشتیبان خارجی ارسال میکند (در حال حاضر فقط
grapherl پشتیبانی میشود). رویدادهای پشتیبانیشده عبارتند از:
• sm_register_connection
• sm_remove_connection
• user_send_packet
• user_receive_packet
• s2s_send_packet
• s2s_receive_packet
• register_user
• remove_user
• offline_message
وقتی فعال باشد، هر فراخوانی به این هوکها یک رویداد شمارنده را به
پشتیبان خارجی ارسال میکند.
گزینههای موجود:
ip: IPv4Address
آدرس IPv4 محلی که پشتیبان در آن قرار دارد. مقدار پیشفرض
127.0.0.1 است.
port: Port
شماره پورت اینترنتی که پشتیبان برای دریافت اتصالات/بستههای
ورودی روی آن گوش میدهد. مقدار پیشفرض 11111 است.
mod_mix
توجه درباره این گزینه: اضافهشده در ۱۶.۰۳ و بهبودیافته در ۱۹.۰۲.
این ماژول یک پیادهسازی آزمایشی از XEP-0369: Mediated Information
eXchange (MIX) است. ادعا میشود که پروتکل MIX در آینده جایگزین پروتکل
MUC خواهد شد (نگاه کنید به mod_muc).
برای آشنایی بیشتر با نحوه استفاده از این قابلیت، میتوانید به آموزش ما
مراجعه کنید: ../../tutorials/mix-010.md|Getting started with MIX
این ماژول به mod_mam وابسته است.
گزینههای موجود:
access_create: AccessName
یک قانون دسترسی برای کنترل ایجاد کانالهای MIX. مقدار پیشفرض all
است.
db_type: mnesia | sql
همانند گزینه سطح بالای default_db، اما فقط برای این ماژول اعمال
میشود.
host
منسوخشده. به جای آن از hosts استفاده کنید.
hosts: [Host, ...]
این گزینه شناسههای Jabber سرویس را تعریف میکند. اگر گزینه hosts
مشخص نشود، تنها شناسه Jabber همان نام میزبان مجازی با پیشوند
"mix." خواهد بود. کلیدواژه @HOST@ با نام واقعی میزبان مجازی
جایگزین میشود.
name: Name
نام سرویس در Service Discovery. این نام فقط توسط کلاینتهای XMPP
خاص نمایش داده میشود. مقدار پیشفرض Channels است.
mod_mix_pam
این ماژول XEP-0405: Mediated Information eXchange (MIX): Participant
Server Requirements را پیادهسازی میکند. این ماژول در صورتی لازم است که
کلاینتهای سازگار با MIX روی سرور شما قصد پیوستن به کانالهای MIX را
داشته باشند (چه روی سرور شما و چه روی سرورهای راه دور).
توجه
mod_mix برای کارکرد این ماژول لازم نیست، اما بدون mod_mix_pam
قابلیت MIX کلاینتهای XMPP محلی شما دچار اشکال خواهد شد.
گزینههای موجود:
cache_life_time: timeout()
همانند گزینه سطح بالای cache_life_time، اما فقط برای این ماژول
اعمال میشود.
cache_missed: true | false
همانند گزینه سطح بالای cache_missed، اما فقط برای این ماژول
اعمال میشود.
cache_size: pos_integer() | infinity
همانند گزینه سطح بالای cache_size، اما فقط برای این ماژول اعمال
میشود.
db_type: mnesia | sql
همانند گزینه سطح بالای default_db، اما فقط برای این ماژول اعمال
میشود.
use_cache: true | false
همانند گزینه سطح بالای use_cache، اما فقط برای این ماژول اعمال
میشود.
mod_mqtt
این ماژول پشتیبانی از پروتکل ../guide/mqtt/index.md|MQTT نسخههای 3.1.1
و 5.0 را اضافه میکند. به یاد داشته باشید که mod_mqtt را در بخشهای
modules و listen پیکربندی کنید.
گزینههای موجود:
access_publish: {TopicFilter: AccessName}
قوانین دسترسی برای محدودکردن دسترسی به موضوعات برای ناشران. به
طور پیشفرض هیچ محدودیتی وجود ندارد.
access_subscribe: {TopicFilter: AccessName}
قوانین دسترسی برای محدودکردن دسترسی به موضوعات برای مشترکین. به
طور پیشفرض هیچ محدودیتی وجود ندارد.
cache_life_time: timeout()
همانند گزینه سطح بالای cache_life_time، اما فقط برای این ماژول
اعمال میشود.
cache_missed: true | false
همانند گزینه سطح بالای cache_missed، اما فقط برای این ماژول
اعمال میشود.
cache_size: pos_integer() | infinity
همانند گزینه سطح بالای cache_size، اما فقط برای این ماژول اعمال
میشود.
db_type: mnesia | sql
همانند گزینه سطح بالای default_db، اما فقط برای این ماژول اعمال
میشود.
match_retained_limit: pos_integer() | infinity
این گزینه تعداد پیامهای نگهداشتهشدهای را که هنگام اشتراک در یک
فیلتر موضوع به کلاینت بازگردانده میشود محدود میکند. مقدار
پیشفرض 1000 است.
max_queue: Size
حداکثر اندازه صف برای بستههای خروجی. مقدار پیشفرض 5000 است.
max_topic_aliases: 0..65535
حداکثر تعداد نام مستعاری که یک کلاینت میتواند با موضوعات مرتبط
کند. مقدار پیشفرض 100 است.
max_topic_depth: Depth
حداکثر عمق موضوع، یعنی تعداد اسلشها (/) در موضوع. مقدار پیشفرض
8 است.
queue_type: ram | file
همانند گزینه سطح بالای queue_type، اما فقط برای این ماژول اعمال
میشود.
ram_db_type: mnesia
همانند گزینه سطح بالای default_ram_db، اما فقط برای این ماژول
اعمال میشود.
session_expiry: timeout()
این گزینه مدت زمان انتظار برای از سرگیری نشست MQTT را مشخص
میکند. وقتی روی 0 تنظیم شود، نشست با بسته شدن اتصال زیرین
کلاینت از بین میرود. مقدار پیشفرض 5 دقیقه است.
use_cache: true | false
همانند گزینه سطح بالای use_cache، اما فقط برای این ماژول اعمال
میشود.
mod_mqtt_bridge
این ماژول قابلیت همگامسازی موضوعات (topics) محلی MQTT با دادههای روی
سرورهای راهدور را اضافه میکند. میتواند هنگامی که کاربر محلی موضوع محلی
را بهروز میکند، موضوعات را روی سرورهای راهدور بهروز کند، یا میتواند
مشترک تغییرات سرور راهدور شود و نسخه محلی را هنگام بهروزرسانی دادههای
راهدور بهروز کند. این ماژول از ejabberd 23.01 در دسترس است.
گزینههای موجود:
replication_user: JID
شناسه کاربری که به عنوان مالک تغییرات محلی تعیین خواهد شد.
servers: {ServerUrl: {Key: Value}}
اعلان دادههای مشترک برای هر ServerUrl. آدرسهای URL سرور
میتوانند از طرحوارههای زیر استفاده کنند: mqtt, mqtts (mqtt با
tls), mqtt5, mqtt5s (هر دو برای فعالسازی پروتکل v5), ws, wss,
ws5, wss5. کلیدها باید به شرح زیر باشند:
authentication: {AuthKey: AuthValue}
فهرست اطلاعات احراز هویت که AuthKey میتواند باشد: username
و password یا certfile که به گواهینامه کلاینت اشاره میکند.
احراز هویت با گواهینامه فقط با mqtts, mqtt5s, wss, wss5
قابل استفاده است.
publish: {LocalTopic: RemoteTopic}
باید publish یا subscribe یا هر دو تنظیم شوند.
subscribe: {RemoteTopic: LocalTopic}
باید publish یا subscribe یا هر دو تنظیم شوند.
مثال:
modules:
mod_mqtt_bridge:
replication_user: "mqtt@xmpp.server.com"
servers:
"mqtt://server.com":
authentication:
certfile: "/etc/ejabberd/mqtt_server.pem"
publish:
"localA": "remoteA" # local changes to 'localA' will be replicated on remote server as 'remoteA'
"topicB": "topicB"
subscribe:
"remoteB": "localB" # changes to 'remoteB' on remote server will be stored as 'localB' on local server
mod_muc
توجه درباره این گزینه: ماژول mod_muc_occupantid در نسخه 26.02 ادغام شد.
این ماژول پشتیبانی از چت چندکاربره (MUC) را فراهم میکند. کاربران
میتوانند اتاقهای موجود را کشف کنند، به آنها بپیوندند یا اتاق جدید ایجاد
کنند. حاضران در اتاق میتوانند به صورت عمومی چت کنند یا مکالمات خصوصی
داشته باشند.
پروتکلهای پیادهسازی شده در این ماژول:
• XEP-0045: Multi-User Chat
• XEP-0249: Direct MUC Invitations
• XEP-0421: Occupant identifiers for semi-anonymous MUCs
• XEP-0486: MUC Avatars
• Muc/Sub: Multi-User Chat Subscriptions
سرویس MUC به هر Jabber ID اجازه میدهد یک ناممستعار (nickname) ثبت کند
تا هیچکس دیگری نتواند از آن ناممستعار در هیچ اتاقی در سرویس MUC استفاده
کند. برای ثبت ناممستعار، کشف سرویس را در کلاینت XMPP خود باز کنید و در
سرویس MUC ثبتنام کنید.
همچنین امکان ثبت ناممستعار در یک اتاق وجود دارد تا هیچکس دیگری نتواند
از آن ناممستعار در آن اتاق استفاده کند. اگر یک ناممستعار در سرویس MUC
ثبت شده باشد، نمیتوان آن ناممستعار را در هیچ اتاقی ثبت کرد، و بالعکس:
ناممستعاری که در یک اتاق ثبت شده، نمیتواند در سرویس MUC ثبت شود.
این ماژول از خوشهبندی و توازن بار پشتیبانی میکند. یک نمونه ماژول
میتواند برای هر گره خوشه راهاندازی شود. اتاقها در زمان ایجاد بر روی
تمام نمونههای ماژول MUC موجود توزیع میشوند. ماژول چت چندکاربره خوشهبندی
شده است اما خود اتاقها نه خوشهبندی شدهاند و نه مقاوم در برابر خرابی:
اگر گره مدیریتکننده مجموعهای از اتاقها خاموش شود، اتاقها حذف میشوند و
در اولین تلاش برای اتصال روی گره موجود دیگری بازسازی خواهند شد.
گزینههای موجود:
access: AccessName
میتوانید مشخص کنید چه کسانی مجاز به استفاده از سرویس چت
چندکاربره هستند. به طور پیشفرض همه مجاز به استفاده از آن هستند.
access_admin: AccessName
این گزینه مشخص میکند چه کسانی مجاز به مدیریت سرویس چت چندکاربره
هستند. مقدار پیشفرض none است، به این معنی که فقط سازنده اتاق
میتواند اتاق خود را مدیریت کند. مدیران میتوانند یک پیام معمولی
به JID سرویس ارسال کنند و در تمام اتاقهای فعال به عنوان پیام
سرویس نمایش داده خواهد شد. مدیران میتوانند یک پیام groupchat به
JID یک اتاق فعال ارسال کنند و پیام به عنوان پیام سرویس در اتاق
نمایش داده خواهد شد.
access_create: AccessName
برای پیکربندی اینکه چه کسانی مجاز به ایجاد اتاقهای جدید در
سرویس چت چندکاربره هستند، میتوان از این گزینه استفاده کرد.
مقدار پیشفرض all است، به این معنی که همه مجاز به ایجاد اتاق
هستند.
access_mam: AccessName
برای پیکربندی اینکه چه کسانی مجاز به تغییر گزینه اتاق mam
هستند. مقدار پیشفرض all است، به این معنی که همه مجاز به تغییر
آن گزینه هستند.
access_persistent: AccessName
برای پیکربندی اینکه چه کسانی مجاز به تغییر گزینه اتاق
persistent هستند. مقدار پیشفرض all است، به این معنی که همه مجاز
به تغییر آن گزینه هستند.
access_register: AccessName
توجه درباره این گزینه: در نسخه 23.10 بهبود یافت. این گزینه مشخص
میکند چه کسانی مجاز به ثبت ناممستعار در سرویس چت چندکاربره و
اتاقها هستند. مقدار پیشفرض all برای سازگاری با نسخههای قبلی
است، به این معنی که هر کاربری مجاز است هر ناممستعار آزادی را در
سرویس MUC و در اتاقها ثبت کند.
append_module_config 🟠: {MUCHost: Options}
توجه درباره این گزینه: در نسخه 26.07 اضافه شد. چند گزینه خاص را
به یک MUC host مشخص که قبلاً در گزینه hosts ماژول mod_muc تعریف
شده اضافه میکند. این مشابه گزینه سطح بالای append_host_config
است، اما در این مورد برای گزینههای mod_muc اعمال میشود.
مثال:
modules:
mod_muc:
hosts:
- service1.@HOST@
- service2.@HOST@
name: "Service General"
append_module_config:
service1.localhost:
name: "Service 1"
service2.example.net:
name: "Service 2"
cleanup_affiliations_on_start: true | false
توجه درباره این گزینه: در نسخه 22.05 اضافه شد. در هنگام
راهاندازی، وابستگیها (affiliations) برای کاربران محلی غیرموجود
حذف میشوند. مقدار پیشفرض false است.
db_type: mnesia | sql
مانند گزینه سطح بالای default_db ، اما فقط برای این ماژول اعمال
میشود.
default_room_options: Options
گزینههای پیشفرض اتاق را تعریف میکند. توجه داشته باشید که سازنده
اتاق میتواند در هر زمان با استفاده از یک کلاینت XMPP با قابلیت
MUC، گزینههای اتاق خود را تغییر دهد. گزینههای Options عبارتند
از:
allow_change_subj: true | false
به حاضران اجازه میدهد موضوع را تغییر دهند. مقدار پیشفرض
true است.
allow_private_messages_from_visitors: anyone | moderators |
nobody
بازدیدکنندگان میتوانند پیام خصوصی برای سایر حاضران ارسال
کنند. مقدار پیشفرض anyone است که به این معنی است که
بازدیدکنندگان میتوانند برای هر حاضری پیام خصوصی ارسال کنند.
allow_query_users: true | false
حاضران میتوانند پرسوجوهای IQ برای سایر حاضران ارسال کنند.
مقدار پیشفرض true است.
allow_subscription: true | false
به کاربران اجازه میدهد مشترک رویدادهای اتاق شوند همانطور که
در
../../developer/xmpp-clients-bots/extensions/muc-sub.md|Multi-User
Chat Subscriptions توضیح داده شده است. مقدار پیشفرض false
است.
allow_user_invites: true | false
به حاضران اجازه میدهد دعوتنامه ارسال کنند. مقدار پیشفرض
false است.
allow_visitor_nickchange: true | false
به بازدیدکنندگان اجازه میدهد ناممستعار را تغییر دهند. مقدار
پیشفرض true است.
allow_visitor_status: true | false
به بازدیدکنندگان اجازه میدهد متن وضعیت را در بهروزرسانیهای
حضور ارسال کنند. اگر غیرمجاز باشد، متن وضعیت قبل از ارسال
بهروزرسانی حضور به تمام حاضران اتاق، حذف میشود. مقدار
پیشفرض true است.
allow_voice_requests: true | false
به بازدیدکنندگان در اتاقهای کنترلشده اجازه میدهد درخواست حق
صحبت کنند. مقدار پیشفرض true است.
allowpm: anyone | participants | moderators | none
چه کسانی میتوانند پیام خصوصی ارسال کنند. مقدار پیشفرض
anyone است.
anonymous: true | false
اتاق ناشناس است: حاضران JID واقعی سایر حاضران را نمیبینند.
توجه داشته باشید که مدیران اتاق همیشه میتوانند JID واقعی
حاضران را ببینند. مقدار پیشفرض true است.
captcha_protected: true | false
وقتی کاربری تلاش میکند به اتاقی بپیوندد که در آن هیچ
وابستگی ندارد (نه مالک، نه مدیر و نه عضو)، اتاق از او
میخواهد یک چالش CAPTCHA را تکمیل کند (به بخش
basic.md#captcha|CAPTCHA مراجعه کنید) تا پیوستن وی به اتاق
پذیرفته شود. مقدار پیشفرض false است.
description: Room Description
توضیح کوتاهی از اتاق. مقدار پیشفرض رشته خالی است.
enable_hats: true | false
توجه درباره این گزینه: در نسخه 25.10 بهبود یافت. اجازه
میدهد نقشهای گستردهای که در XEP-0317: Hats تعریف شدهاند،
استفاده شوند. برای نسخههای ejabberd قدیمیتر از 25.10 به
صفحه ../../tutorials/muc-hats.md|MUC Hats مراجعه کنید.
مقدار پیشفرض true است.
lang: Language
زبان ترجیحی برای بحثهای اتاق. فرمت زبان باید مطابق RFC 5646
باشد. هیچ مقدار پیشفرضی وجود ندارد.
logging: true | false
پیامهای عمومی با استفاده از mod_muc_log ثبت میشوند. مقدار
پیشفرض false است.
mam: true | false
بایگانی پیام را فعال میکند. مستلزم فعال بودن mod_mam است.
مقدار پیشفرض false است.
max_users: Number
حداکثر تعداد حاضران در اتاق. مقدار پیشفرض 200 است.
members_by_default: true | false
حاضرانی که وارد اتاق میشوند به طور پیشفرض شرکتکننده هستند،
بنابراین "حق صحبت" دارند. مقدار پیشفرض true است.
members_only: true | false
فقط اعضای اتاق میتوانند وارد شوند. مقدار پیشفرض false است.
moderated: true | false
فقط حاضرانی که "حق صحبت" دارند میتوانند پیام عمومی ارسال
کنند. مقدار پیشفرض true است.
password: Password
رمز عبور اتاق. مستلزم تنظیم گزینه password_protected بر روی
true است. هیچ مقدار پیشفرضی وجود ندارد.
password_protected: true | false
برای ورود به اتاق رمز عبور لازم است. مقدار پیشفرض false
است.
persistent: true | false
اتاق حتی اگر آخرین شرکتکننده خارج شود باقی میماند. مقدار
پیشفرض false است.
presence_broadcast: [Role]
فهرست نقشهایی که حضورشان به همه اعلام میشود. فهرست میتواند
یک یا چند مورد از موارد زیر را شامل شود: moderator,
participant, visitor. مقدار پیشفرض در مثال زیر نشان داده
شده است:
مثال:
presence_broadcast:
- moderator
- participant
- visitor
public: true | false
اتاق در فهرست سرویس MUC عمومی است و قابل کشف است. مدیران
MUC و شرکتکنندگان اتاق، اتاقهای خصوصی را در کشف سرویس
میبینند اگر کلاینت XMPP آنها از این ویژگی پشتیبانی کند.
مقدار پیشفرض true است.
public_list: true | false
فهرست شرکتکنندگان بدون نیاز به ورود به اتاق، عمومی است.
مقدار پیشفرض true است.
pubsub: PubSub Node
URI از XMPP گره Publish/Subscribe مرتبط. مقدار پیشفرض رشته
خالی است.
title: Room Title
عنوان قابل خواندن توسط انسان برای اتاق. هیچ مقدار پیشفرضی
وجود ندارد.
vcard: vCard
یک vCard سفارشی برای اتاق. به گزینه معادل آن در mod_muc
مراجعه کنید. مقدار پیشفرض رشته خالی است.
vcard_xupdate: undefined | external | AvatarHash
هش تصویر آواتار را تنظیم میکند. مقدار پیشفرض undefined است.
voice_request_min_interval: Number
حداقل فاصله بین درخواستهای حق صحبت، بر حسب ثانیه. مقدار
پیشفرض 1800 است.
hibernation_timeout: infinity | Seconds
مهلت زمانی قبل از به حالت خواب بردن فرآیند اتاق، بر حسب ثانیه.
مقدار پیشفرض infinity است.
history_size: Size
یک تاریخچه کوچک از بحث جاری هنگامی که کاربران وارد اتاق میشوند
برای آنها ارسال میشود. با این گزینه میتوانید تعداد پیامهای
تاریخچهای که باید نگهداری و برای کاربرانی که به اتاق میپیوندند
ارسال شود را تعریف کنید. این مقدار یک عدد صحیح غیرمنفی است.
تنظیم مقدار به 0 ویژگی تاریخچه را غیرفعال میکند و در نتیجه هیچ
چیزی در حافظه نگهداری نمیشود. مقدار پیشفرض 20 است. این مقدار بر
تمام اتاقهای سرویس تأثیر میگذارد. توجه: کلاینتهای مدرن XMPP به
بایگانی پیام (XEP-0313) متکی هستند، بنابراین اگر فقط از
کلاینتهای مدرن استفاده میکنید و ماژول mod_mam را بارگذاری
کردهاید، میتوانید آزادانه ویژگی تاریخچه را غیرفعال کنید.
host
منسوخ شده. به جای آن از hosts استفاده کنید.
hosts: [Host, ...]
این گزینه Jabber IDهای سرویس را تعریف میکند. اگر گزینه hosts
مشخص نشود، تنها Jabber ID نام میزبان مجازی با پیشوند
"conference." خواهد بود. کلیدواژه @HOST@ با نام واقعی میزبان
مجازی جایگزین میشود.
max_captcha_whitelist: Number
توجه درباره این گزینه: در نسخه 21.01 اضافه شد. این گزینه حداکثر
تعداد کاراکترهایی که Captcha Whitelist هنگام پیکربندی اتاق
میتواند داشته باشد را تعریف میکند. مقدار پیشفرض infinity است.
max_password: Number
توجه درباره این گزینه: در نسخه 21.01 اضافه شد. این گزینه حداکثر
تعداد کاراکترهایی که رمز عبور هنگام پیکربندی اتاق میتواند داشته
باشد را تعریف میکند. مقدار پیشفرض infinity است.
max_room_desc: Number
این گزینه حداکثر تعداد کاراکترهایی که توضیحات اتاق هنگام
پیکربندی اتاق میتواند داشته باشد را تعریف میکند. مقدار پیشفرض
infinity است.
max_room_id: Number
این گزینه حداکثر تعداد کاراکترهایی که Room ID هنگام ایجاد اتاق
جدید میتواند داشته باشد را تعریف میکند. مقدار پیشفرض infinity
است.
max_room_name: Number
این گزینه حداکثر تعداد کاراکترهایی که نام اتاق هنگام پیکربندی
اتاق میتواند داشته باشد را تعریف میکند. مقدار پیشفرض infinity
است.
max_rooms_discoitems: Number
وقتی تعداد اتاقها از این Number بیشتر باشد، فقط اتاقهای غیرخالی
در پرسوجوی کشف سرویس برگردانده میشوند. مقدار پیشفرض 100 است.
max_user_conferences: Number
این گزینه حداکثر تعداد اتاقهایی که هر کاربر میتواند به آنها
بپیوندد را تعریف میکند. مقدار پیشفرض 100 است. این گزینه برای
جلوگیری از سوءاستفادههای احتمالی استفاده میشود. توجه داشته
باشید که این یک محدودیت نرم است: برخی کاربران گاهی اوقات
میتوانند در پیکربندیهای خوشهای به کنفرانسهای بیشتری بپیوندند.
max_users: Number
این گزینه در سطح سرویس، حداکثر تعداد کاربران مجاز در هر اتاق را
تعریف میکند. میتوان آن را در پیکربندی هر اتاق کاهش داد اما
نمیتوان در پیکربندی اتاقهای منفرد افزایش داد. مقدار پیشفرض 200
است.
max_users_admin_threshold: Number
این گزینه تعداد مدیران سرویس یا مالکان اتاق مجاز به ورود به
اتاق را وقتی که حداکثر تعداد حاضران مجاز رسیده است تعریف میکند.
محدودیت پیشفرض 5 است.
max_users_presence: Number
این گزینه تعریف میکند که پس از چه تعداد کاربر در اتاق، اتاق
شلوغ محسوب میشود. وقتی یک اتاق MUC شلوغ محسوب میشود، ارسال
اعلانهای حضور محدود میشود تا بار، ترافیک و "طوفان" بیش از حد
حضور دریافتی توسط شرکتکنندگان کاهش یابد. مقدار پیشفرض 1000 است.
min_message_interval: Number
این گزینه حداقل فاصله بین دو پیام ارسال شده توسط یک حاضر را بر
حسب ثانیه تعریف میکند. این گزینه سراسری است و برای تمام اتاقها
معتبر است. میتوان از یک مقدار اعشاری استفاده کرد. وقتی این
گزینه تعریف نشده باشد، نرخ پیام محدود نمیشود. این ویژگی میتواند
برای محافظت از یک سرویس MUC در برابر سوءاستفاده حاضران و محدود
کردن تعداد پیامهایی که توسط سرویس ارسال میشود استفاده شود. یک
مقدار مناسب برای این حداقل فاصله پیام 0.4 ثانیه است. اگر یک
حاضر سعی کند پیامها را سریعتر ارسال کند، یک خطا ارسال میشود که
توضیح میدهد پیام دور انداخته شده و دلیل غیرقابل قبول بودن پیام
را شرح میدهد.
min_presence_interval: Number
این گزینه حداقل زمان بین تغییرات حضور از یک حاضر مشخص را بر حسب
ثانیه تعریف میکند. این گزینه سراسری است و برای تمام اتاقها
معتبر است. میتوان از یک مقدار اعشاری استفاده کرد. وقتی این
گزینه تعریف نشده باشد، هیچ محدودیتی اعمال نمیشود. این گزینه
میتواند برای محافظت از یک سرویس MUC در برابر سوءاستفاده حاضران
استفاده شود. اگر یک حاضر سعی کند حضور خود را بیشتر از فاصله
مشخص شده تغییر دهد، حضور توسط ejabberd کش میشود و فقط آخرین
حضور پس از انقضای تأخیر فاصله به تمام حاضران اتاق ارسال میشود.
بستههای حضور میانی بیسروصدا دور انداخته میشوند. یک مقدار مناسب
برای این گزینه 4 ثانیه است.
name: string()
مقدار نام سرویس. این نام فقط در برخی کلاینتهایی که از XEP-0030:
Service Discovery پشتیبانی میکنند قابل مشاهده است. مقدار پیشفرض
Chatrooms است.
preload_rooms: true | false
آیا همه اتاقهای ماندگار هنگام راهاندازی در حافظه بارگذاری شوند.
اگر غیرفعال باشد، اتاق فقط در اولین پیوستن شرکتکننده بارگذاری
میشود. مقدار پیشفرض true است. غیرفعال کردن پیشبارگذاری اتاق
وقتی تعداد اتاقها زیاد است منطقی است: این کار زمان راهاندازی
سرور و مصرف حافظه را بهبود میدهد.
queue_type: ram | file
مانند گزینه سطح بالای queue_type ، اما فقط برای این ماژول اعمال
میشود.
ram_db_type: mnesia | sql
مانند گزینه سطح بالای default_ram_db ، اما فقط برای این ماژول
اعمال میشود.
regexp_room_id: string()
این گزینه عبارت منظمای را تعریف میکند که Room ID باید برای
اجازه ایجاد اتاق، آن را ارضا کند. مقدار پیشفرض رشته خالی است.
room_shaper: none | ShaperName
این گزینه شکلدهنده (shaper) برای اتاقهای MUC را تعریف میکند.
مقدار پیشفرض none است.
user_message_shaper: none | ShaperName
این گزینه شکلدهنده (shaper) برای پیامهای کاربران را تعریف
میکند. مقدار پیشفرض none است.
user_presence_shaper: none | ShaperName
این گزینه شکلدهنده (shaper) برای حضورهای کاربران را تعریف
میکند. مقدار پیشفرض none است.
vcard: vCard
یک vCard سفارشی برای سرویس که توسط برخی کلاینتهای XMPP در کشف
سرویس نمایش داده خواهد شد. مقدار vCard یک نگاشت YAML است که از
نمایش XML یک vCard ساخته شده است. از آنجا که نمایش هیچ خصیصهای
ندارد، نگاشت ساده است.
مثال:
# This XML representation of vCard:
#
# Conferences
#
#
# Elm Street
#
#
#
# is translated to:
vcard:
fn: Conferences
adr:
-
work: true
street: Elm Street
mod_muc_admin
این ماژول دستوراتی برای مدیریت سرویسهای MUC محلی و اتاقهای MUC آنها
فراهم میکند. همچنین صفحات ساده WebAdmin برای مشاهده اتاقهای موجود ارائه
میدهد.
این ماژول به mod_muc وابسته است.
گزینههای موجود:
subscribe_room_many_max_users: Number
توجه درباره این گزینه: در نسخه 22.05 اضافه شده است. تعداد
کاربرانی که میتوانند به طور همزمان با استفاده از API
subscribe_room_many در یک اتاق مشترک شوند. مقدار پیشفرض 50 است.
برچسبهای API: ../../developer/ejabberd-api/admin-tags.md#muc|muc,
../../developer/ejabberd-api/admin-tags.md#muc_room|muc_room,
../../developer/ejabberd-api/admin-tags.md#muc_sub|muc_sub
mod_muc_log
این ماژول ثبت اختیاری مکالمات عمومی Multi-User Chat (MUC) در قالب HTML
را فعال میکند. پس از فعالسازی این ماژول، کاربران میتوانند با استفاده از
یک کلاینت XMPP با قابلیت MUC به اتاق بپیوندند و در صورت داشتن دسترسیهای
لازم، میتوانند فرم پیکربندی را درخواست کنند که در آن میتوانند گزینه
فعالسازی ثبت اتاق را تنظیم کنند.
ویژگیها:
• جزئیات اتاق در بالای هر صفحه نمایش داده میشود: عنوان اتاق، JID،
نویسنده، موضوع و پیکربندی.
• JID اتاق در HTML تولید شده پیوندی برای پیوستن به اتاق است (با
استفاده از XMPP URI).
• تغییرات موضوع و پیکربندی اتاق ردیابی و نمایش داده میشوند.
• پیوستنها، خروجها، تغییر نام مستعار، اخراجها، مسدودسازیها و /me
ردیابی و نمایش داده میشوند، از جمله دلیل آنها در صورت وجود.
• فایلهای HTML تولید شده با XHTML 1.0 Transitional و CSS سازگار
هستند.
• برچسبهای زمانی پیوندهای خود-ارجاعی هستند.
• پیوندهایی در بالا برای ناوبری سریعتر: روز قبل، روز بعد، بالا.
• CSS برای تعریف سبک استفاده میشود و میتوان از یک فایل CSS سفارشی
استفاده کرد.
• URLها در پیامها و موضوعات به لینکهای قابل کلیک تبدیل میشوند.
• منطقه زمانی استفاده شده در برچسبهای زمانی در فایلهای ثبت نمایش داده
میشود.
• میتوان یک پیوند سفارشی در بالای هر صفحه اضافه کرد.
این ماژول به mod_muc وابسته است.
گزینههای موجود:
access_log: AccessName
این گزینه مشخص میکند که کدام کاربران اتاق مجاز به فعال یا
غیرفعال کردن ثبت اتاق هستند. مقدار پیشفرض muc_admin است. توجه:
برای این تنظیم پیشفرض باید یک قانون دسترسی برای muc_admin تعریف
کرده باشید تا اثرگذار باشد.
cssfile: Path | URL
با این گزینه میتوانید تعیین کنید که فایلهای HTML باید از یک
فایل CSS سفارشی استفاده کنند یا از CSS توکار. مقادیر مجاز یا
Path به فایل محلی یا یک URL به فایل راه دور هستند. به طور
پیشفرض یک CSS از پیش تعریف شده در صفحه HTML تعبیه میشود.
dirname: room_jid | room_name
نام دایرکتوری اتاق را پیکربندی میکند. اگر روی room_jid تنظیم
شود، نام دایرکتوری اتاق، JID کامل اتاق خواهد بود. در غیر این
صورت، نام دایرکتوری اتاق فقط نام اتاق خواهد بود و نام سرویس MUC
در آن درج نمیشود. مقدار پیشفرض room_jid است.
dirtype: subdirs | plain
نوع دایرکتوریهای ایجاد شده را میتوان با این گزینه مشخص کرد. اگر
روی subdirs تنظیم شود، برای هر سال و ماه زیردایرکتوریهایی ایجاد
میشوند. در غیر این صورت، نامهای فایلهای ثبت شامل تاریخ کامل
هستند و زیردایرکتوری وجود ندارد. مقدار پیشفرض subdirs است.
file_format: html | plaintext
قالب فایلهای ثبت را تعریف میکند: html در قالب HTML ذخیره میکند،
plaintext در قالب متن ساده ذخیره میکند. مقدار پیشفرض html است.
file_permissions: {mode: Mode, group: Group}
مجوزهایی که هنگام ایجاد فایلهای ثبت باید استفاده شوند را تعریف
میکند: عدد حالت، و شناسه عددی گروهی که مالک فایلها خواهد بود.
مقدار پیشفرض در مثال زیر نشان داده شده است:
مثال:
file_permissions:
mode: 644
group: 33
outdir: Path
این گزینه مسیر کامل دایرکتوریای را که فایلهای HTML باید در آن
ذخیره شوند تنظیم میکند. مطمئن شوید که کاربر daemon ejabberd
دسترسی نوشتن به آن دایرکتوری را دارد. مقدار پیشفرض www/muc است.
spam_prevention: true | false
اگر روی true تنظیم شود، یک ویژگی خاص به لینکها اضافه میشود که
از ایندکس شدن آنها توسط موتورهای جستجو جلوگیری میکند. مقدار
پیشفرض true است، به این معنی که ویژگیهای nofollow به لینکهای
ارسال شده توسط کاربر اضافه خواهند شد.
timezone: local | universal
منطقه زمانی برای ثبتها با این گزینه قابل پیکربندی است. اگر روی
local تنظیم شود، زمان محلی که سیستمعامل به موتور Erlang گزارش
میدهد استفاده خواهد شد. در غیر این صورت، زمان UTC استفاده
میشود. مقدار پیشفرض local است.
top_link: {URL: Text}
با این گزینه میتوانید پیوند گوشه بالا سمت راست هر فایل ثبت را
سفارشی کنید. مقدار پیشفرض در مثال زیر نشان داده شده است:
مثال:
top_link:
/: Home
url: URL
یک URL سطح بالا که کلاینت میتواند از طریق آن به ثبتهای یک
کنفرانس خاص دسترسی داشته باشد. اگر گزینه dirname روی room_name
تنظیم شده باشد، نام کنفرانس به URL الحاق میشود، در غیر این صورت
JID کنفرانس به URL الحاق میشود. مقدار پیشفرضی وجود ندارد.
mod_muc_rtbl
توجه درباره این ماژول: در نسخه 23.04 اضافه شده است.
این ماژول لیستهای مسدودسازی بلادرنگ (Real-time blocklists) را برای
اتاقهای MUC پیادهسازی میکند.
با مشاهده گره pubsub راه دور مطابق با مشخصات توصیف شده در
https://xmppbl.org کار میکند.
گزینههای موجود:
rtbl_node: PubsubNodeName
نام گره pubsub که باید برای ردیابی کاربران مسدود شده استفاده
شود. مقدار پیشفرض muc_bans_sha256 است.
rtbl_server: Domain
دامنه سرور XMPP که لیست مسدودسازی را ارائه میدهد. مقدار پیشفرض
xmppbl.org است.
mod_multicast
این ماژول یک سرویس برای XEP-0033: Extended Stanza Addressing پیادهسازی
میکند.
گزینههای موجود:
access: Access
قانون دسترسی برای محدود کردن اینکه چه کسانی میتوانند بستهها را
به سرویس multicast ارسال کنند. مقدار پیشفرض: all.
host
منسوخ شده. به جای آن از hosts استفاده کنید.
hosts: [Host, ...]
این گزینه Jabber IDهای سرویس را تعریف میکند. اگر گزینه hosts
مشخص نشده باشد، تنها Jabber ID نام میزبان vhost مجازی با پیشوند
"multicast." خواهد بود. کلیدواژه @HOST@ با نام واقعی vhost
مجازی جایگزین میشود. لطفاً توجه داشته باشید: این ماژول فقط از
اولین vhost تعریف شده در این گزینه استفاده میکند.
limits: Sender: Stanza: Number
فهرستی از محدودیتهای سفارشی را مشخص میکند که محدودیتهای پیشفرض
تعریف شده در XEP-0033 را بازنویسی میکنند. محدودیتها بر اساس نوع
فرستنده و نوع stanza تعریف میشوند، که در آن:
• sender میتواند باشد: local یا remote.
• stanza میتواند باشد: message یا presence.
• number میتواند یک عدد صحیح مثبت یا infinite باشد.
مثال:
# Default values:
local:
message: 100
presence: 100
remote:
message: 20
presence: 20
name
نام سرویس برای ارائه در پرسش Info به کشف سرویس (Service
Discovery). پیشفرض "Multicast" است.
vcard
عنصر vCard برای بازگشت هنگام پرسش. مقدار پیشفرض undefined است.
مثال:
# Only admins can send packets to multicast service
access_rules:
multicast:
- allow: admin
# If you want to allow all your users:
access_rules:
multicast:
- allow
# This allows both admins and remote users to send packets,
# but does not allow local users
acl:
allservers:
server_glob: "*"
access_rules:
multicast:
- allow: admin
- deny: local
- allow: allservers
modules:
mod_multicast:
host: multicast.example.org
access: multicast
limits:
local:
message: 40
presence: infinite
remote:
message: 150
mod_offline
این ماژول پیادهسازی XEP-0160: بهترین روشها برای مدیریت پیامهای آفلاین و
XEP-0013: بازیابی انعطافپذیر پیامهای آفلاین را فراهم میکند. این بدان
معناست که تمام پیامهای ارسالی به کاربر آفلاین تا زمانی که آن کاربر
دوباره آنلاین شود در کارگزار ذخیره خواهند شد. بنابراین بسیار شبیه به
نحوه کارکرد ایمیل است. یک کاربر آفلاین در نظر گرفته میشود اگر هیچ نشستی
با اولویت presence بزرگتر از ۰ در حال حاضر باز نباشد.
API delete_expired_messages امکان حذف پیامهای منقضی شده را میدهد، و API
delete_old_messages پیامهای قدیمیتر را حذف میکند.
گزینههای موجود:
access_max_user_messages: AccessName
این گزینه تعریف میکند که کدام قانون دسترسی برای محدود کردن
حداکثر تعداد پیامهای آفلاینی که یک کاربر میتواند داشته باشد
(سهمیه) اعمال خواهد شد. هنگامی که کاربر پیامهای آفلاین بیش از
حد دارد، هر پیام جدیدی که دریافت میکند دور انداخته میشود و خطای
به فرستنده بازگردانده میشود. مقدار
پیشفرض max_user_offline_messages است.
bounce_groupchat: true | false
این گزینه برای غیرفعال کردن یک بهینهسازی استفاده میشود که از
بازگرداندن پیامهای خطا هنگامی که پیامهای گروهی نمیتوانند به
صورت آفلاین ذخیره شوند جلوگیری میکند. این بار اتاق گفتگو را
بدون هیچ اشکالی در موارد استفاده استاندارد کاهش میدهد. مقدار
پیشفرض را فقط در صورتی تغییر دهید که یک ماژول سفارشی داشته
باشید که از قلاب آفلاین پس از mod_offline استفاده میکند. این
گزینه میتواند هم برای MUC استاندارد و هم برای MucSub مفید باشد،
اما احتمال وقوع bounce در زمینه MucSub بسیار بیشتر است،
بنابراین فعال کردن آن در سرویسهای بزرگ MucSub اهمیت بیشتری
دارد. مقدار پیشفرض false است، به این معنا که بهینهسازی فعال
است.
cache_life_time: timeout()
مانند گزینه سطح بالای cache_life_time است، اما فقط برای این
ماژول اعمال میشود.
cache_size: pos_integer() | infinity
مانند گزینه سطح بالای cache_size است، اما فقط برای این ماژول
اعمال میشود.
db_type: mnesia | sql
مانند گزینه سطح بالای default_db است، اما فقط برای این ماژول
اعمال میشود.
store_empty_body: true | false | unless_chat_state
آیا پیامهایی که فاقد عنصر