SLAPD-PERL(5) File Formats Manual SLAPD-PERL(5)

slapd-perl - ماژول بکاند پرل برای slapd

/etc/openldap/slapd.conf

بک‌اند Perl برای slapd(8) با جاسازی یک مفسر perl(1) درون slapd(8) کار می‌کند. هر بخش پایگاه‌داده perl در فایل پیکربندی slapd.conf(5) باید مشخص کند از چه ماژول پرلی استفاده شود. سپس slapd یک شیء پرل جدید می‌سازد که تمام درخواست‌های مربوط به آن نمونه خاص از بک‌اند را مدیریت می‌کند.

شما باید برای هر یک از اقدامات زیر یک متد ایجاد کنید:

* new        # creates a new object,
* search     # performs the ldap search,
* compare    # does a compare,
* modify     # modifies an entry,
* add        # adds an entry to backend,
* modrdn     # modifies an entry's rdn,
* delete     # deletes an ldap entry,
* config     # module-specific config directives,
* init       # called after backend is initialized.

مگر در مواردی که خلاف آن مشخص شده باشد، متدها کد نتیجه‌ای را برمی‌گردانند که به کلاینت بازگردانده خواهد شد. اقدامات پیاده‌سازی‌نشده می‌توانند صرفاً کد unwillingToPerform (53) را بازگردانند.

این متد زمانی فراخوانی می‌شود که فایل پیکربندی با یک خط perlmod مواجه شود. سپس ماژول موجود در آن خط عملاً در مفسر پرل `use` می‌شود و پس از آن متد new برای ساخت یک شیء جدید فراخوانی می‌گردد. توجه داشته باشید که همانند هر شیء پرل، ممکن است چندین نمونه از آن شیء ساخته شود. متد new نام کلاس را به عنوان آرگومان دریافت می‌کند.
این متد زمانی که یک درخواست جستجو از سوی کلاینت بیاید فراخوانی می‌شود. آرگومان‌های آن به شرح زیر هستند:
* object reference
* base DN
* scope
* alias dereferencing policy
* size limit
* time limit
* filter string
* attributes only flag (1 for yes)
* list of attributes to return (may be empty)

مقدار بازگشتی: (resultcode, ldif-entry, ldif-entry, ...)

این متد زمانی که یک درخواست مقایسه از سوی کلاینت بیاید فراخوانی می‌شود. آرگومان‌های آن به شرح زیر هستند:
* object reference
* dn
* attribute assertion string
این متد زمانی که یک درخواست تغییر (modify) از سوی کلاینت بیاید فراخوانی می‌شود. آرگومان‌های آن به شرح زیر هستند:
* object reference
* dn
* a list formatted as follows
  ({ "ADD" | "DELETE" | "REPLACE" },
   attributetype, value...)...
این متد زمانی که یک درخواست افزودن (add) از سوی کلاینت بیاید فراخوانی می‌شود. آرگومان‌های آن به شرح زیر هستند:
* object reference
* entry in string format
این متد زمانی که یک درخواست modrdn از سوی کلاینت بیاید فراخوانی می‌شود. آرگومان‌های آن به شرح زیر هستند:
* object reference
* dn
* new rdn
* delete old dn flag (1 means yes)
این متد زمانی که یک درخواست حذف (delete) از سوی کلاینت بیاید فراخوانی می‌شود. آرگومان‌های آن به شرح زیر هستند:
* object reference
* dn
این متد به ازای هر خط perlModuleConfig در فایل پیکربندی slapd.conf(5) یک بار فراخوانی می‌شود. آرگومان‌های آن به شرح زیر هستند:
* object reference
* array of arguments on line

مقدار بازگشتی: غیر صفر اگر این یک گزینه معتبر نباشد.

این متد پس از مقداردهی اولیه بک‌اند فراخوانی می‌شود. آرگومان آن به شرح زیر است:
* object reference

مقدار بازگشتی: غیر صفر در صورتی که مقداردهی اولیه با شکست مواجه شود.

این گزینه‌های slapd.conf برای پایگاه‌داده بک‌اند PERL اعمال می‌شوند. بدین معنا که باید پس از یک خط "database perl" و قبل از هر خط "backend" یا "database" بعدی قرار گیرند. سایر گزینه‌های پایگاه‌داده در صفحه راهنمای slapd.conf(5) شرح داده شده‌اند.

مسیر را به متغیر @INC اضافه می‌کند.
نام ماژول ModName را از ModName.pm اصطلاحاً `use` می‌کند.
نتایج جستجو نامزدهایی هستند که باید (با فیلتر موجود در درخواست جستجو) فیلتر شوند، نه نتایج جستجویی که مستقیماً به کلاینت بازگردانده شوند.
متد config ماژول را با آرگومان‌های داده‌شده فراخوانی می‌کند.

یک ماژول پرل نمونه به نام `SampleLDAP' در دایرکتوری slapd/back-perl/ در درخت کد منبع OpenLDAP وجود دارد.

بک‌اند perl از هیچ‌یک از قواعد معنایی کنترل دسترسی شرح داده‌شده در slapd.access(5) پیروی نمی‌کند؛ تمام کنترل دسترسی به اسکریپت‌نویسی PERL زیرین واگذار می‌شود. تنها دسترسی read (=r) به شبه‌ویژگی entry و سایر مقادیر ویژگی‌های مدخل‌های بازگردانده‌شده توسط عملیات search رعایت می‌شود، که توسط فرانت‌اند انجام می‌گیرد.

رابط این بک‌اند با ماژول پرل ممکن است تغییر کند (MAY change). از هرگونه پیشنهادی بسیار استقبال خواهد شد.

توجه: در نسخه‌های قبلی، هر خط ناشناخته‌ای در فایل slapd.conf به متد config ماژول پرل ارسال می‌شد. این رفتار منسوخ شده است (اما همچنان برای سازگاری با نسخه‌های پیشین مجاز است)، و در عوض باید از دستورالعمل perlModuleConfig برای فراخوانی متد config ماژول استفاده شود. این قابلیت سازگاری در آینده حذف خواهد شد.

/etc/openldap/slapd.conf
فایل پیکربندی پیش‌فرض slapd

slapd.conf(5), slapd(8), perl(1).

2026/03/09 OpenLDAP 2.6.13