سفارشی‌سازی گردش‌کار (Workflow) در DirectAdmin: هوک‌ها، کنترل دستورات، Feature Setها و مدیریت پلاگین‌ها

این مقاله یک راهنمای جامع برای سفارشی‌سازی رفتار DirectAdmin است. شامل استفاده از اسکریپت‌های pre/post، کنترل سطح دسترسی دستورات، ساخت و مدیریت Feature Setها، محدودسازی یا فعال‌سازی پلاگین‌ها، و نحوه اعمال این تنظیمات روی کاربران و پکیج‌ها. این ابزارها به مدیر سرور اجازه می‌دهند DirectAdmin را دقیقاً مطابق نیازهای خود تنظیم کند.

DirectAdmin customizationfeature setspre/post scripts

~4 دقیقه مطالعه • بروزرسانی ۱۰ اسفند ۱۴۰۴

1. مقدمه‌ای بر سفارشی‌سازی Workflow در DirectAdmin


DirectAdmin ابزارهای مختلفی برای تغییر ظاهر، رفتار و سطح دسترسی‌ها ارائه می‌دهد. این قابلیت‌ها به مدیر سرور اجازه می‌دهند کنترل پنل را دقیقاً مطابق نیازهای خود تنظیم کنند.


مهم‌ترین بخش‌های قابل سفارشی‌سازی عبارت‌اند از:


  • اسکریپت‌های pre/post (هوک‌ها)
  • فایل‌های commands.allow و commands.deny
  • Feature Setها
  • پلاگین‌ها و مدیریت سطح دسترسی آن‌ها

---

2. اسکریپت‌های Pre/Post (هوک‌ها)


DirectAdmin برای اکثر عملیات‌ها هوک‌هایی ارائه می‌دهد که می‌توانید قبل یا بعد از انجام یک کار، اسکریپت دلخواه خود را اجرا کنید.


2.1 رفتار اسکریپت‌ها


  • pre.sh قبل از انجام عملیات اجرا می‌شود
  • post.sh بعد از انجام عملیات اجرا می‌شود
  • اگر اسکریپت pre با کد غیر صفر خارج شود، DirectAdmin عملیات را متوقف می‌کند

مثال: اگر بخواهید هنگام ایجاد کاربر جدید، یک عملیات اضافی انجام شود، از user_create_post.sh استفاده می‌کنید.


DirectAdmin لیست کامل هوک‌ها را ارائه می‌دهد:


  • لیست کامل اسکریپت‌های *_post.sh
  • لیست کامل اسکریپت‌های *_pre.sh

---

3. کنترل دستورات با commands.allow و commands.deny


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


مزایا:


  • بدون نیاز به اسکریپت‌نویسی
  • کنترل ساده و سریع
  • قابل استفاده برای محدودسازی کاربران خاص

3.1 Login Keys


Login Keys امکان ایجاد چند رمز عبور برای یک حساب را می‌دهد، با قابلیت:


  • محدودسازی دستورات
  • محدودسازی IP
  • تاریخ انقضا
  • تعداد دفعات استفاده

---

4. Feature Sets


Feature Setها یک روش مدرن و قدرتمند برای کنترل سطح دسترسی کاربران هستند. برخلاف پکیج‌ها که محدودیت‌ها را کنترل می‌کنند، Feature Setها تعیین می‌کنند کاربر چه بخش‌هایی از DirectAdmin را می‌تواند ببیند یا اجرا کند.


4.1 ساختار Feature Set


در فایل user.conf یا پکیج‌ها، مقدار زیر اضافه می‌شود:


feature_sets=view_domain:tickets:dns_only

قوانین:


  • مقادیر با ":" جدا می‌شوند
  • مقادیر نامعتبر نادیده گرفته می‌شوند
  • مقدار خالی باعث حذف متغیر می‌شود

4.2 مسیر ذخیره‌سازی Feature Setها


مسیر پیش‌فرض:


/usr/local/directadmin/data/templates/feature_sets/

مسیر سفارشی:


/usr/local/directadmin/data/templates/custom/feature_sets/

4.3 Feature Setهای پیش‌فرض


  • dns_only — فقط مدیریت DNS
  • email_only — فقط امکانات ایمیل
  • tickets — سیستم پیام و تیکت
  • view_domain — امکانات پایه مثل مشاهده دامنه و تغییر رمز
  • core_functions — ترکیب view_domain + tickets

---

5. ساخت یک Feature Set سفارشی


5.1 ایجاد دایرکتوری


mkdir -p /usr/local/directadmin/data/templates/custom/feature_sets
cd /usr/local/directadmin/data/templates/feature_sets/
cp -rp core_functions ../custom/feature_sets/example_set

5.2 تعیین نام Feature Set


/usr/local/directadmin/data/templates/feature_sets/example_set/lang/en.name.txt

5.3 افزودن دستورات مجاز


فایل زیر را ویرایش کنید:


example_set/commands.allow

برای یافتن نام دستورات:


  • DirectAdmin را در حالت debug اجرا کنید
  • یا از API استفاده کنید:

curl -s $(da api-url --user=[DA_USER])/api/session | jq '.allowedCommands'

5.4 اعمال Feature Set


برای یک کاربر:


Admin Level → Show All Users → Modify → Feature Sets

برای یک پکیج:


Admin Level → Manage User Packages → Modify/Create → Feature Sets

---

6. پلاگین‌ها


پلاگین‌ها اسکریپت‌هایی هستند که امکانات جدیدی به DirectAdmin اضافه می‌کنند و با سطح دسترسی کاربر اجرا می‌شوند، بنابراین به‌طور پیش‌فرض امن هستند.


نکته مهم: اگر پلاگین را با chmod 4755 ست کنید، می‌تواند با سطح root اجرا شود—این کار فقط در صورت اطمینان کامل از امنیت کد توصیه می‌شود.


---

7. مدیریت سطح دسترسی پلاگین‌ها در پکیج‌ها


پلاگین‌ها می‌توانند برای هر کاربر یا پکیج فعال یا غیرفعال شوند.


7.1 مسیرهای ذخیره‌سازی


پکیج کاربر:


/usr/local/directadmin/data/users/USERNAME/packages/PACKAGE_NAME

فایل user.conf:


/usr/local/directadmin/data/users/USERNAME/user.conf

7.2 فعال‌سازی یا غیرفعال‌سازی پلاگین‌ها


اجازه دادن به پلاگین‌ها:


plugins_allow=plug1:plug2

ممنوع کردن پلاگین‌ها:


plugins_deny=plug3:plug4

7.3 قوانین منطقی


  • اگر هیچ‌کدام وجود نداشته باشند → همه پلاگین‌ها مجازند
  • اگر plugins_allow وجود داشته باشد → فقط همان‌ها مجازند
  • اگر plugins_deny وجود داشته باشد → همان‌ها ممنوعند
  • اگر هر دو باشند → plugins_allow تعیین‌کننده نهایی است

7.4 پاک کردن لیست پلاگین‌ها


plugins_allow=[clear]
plugins_deny=[clear]

توجه: مقدار خالی plugins_allow= یعنی هیچ پلاگینی اجازه اجرا ندارد.


نوشته و پژوهش شده توسط دکتر شاهین صیامی