~3 دقیقه مطالعه • بروزرسانی ۱۰ اسفند ۱۴۰۴
1. مقدمهای بر سیستم پلاگین DirectAdmin
سیستم پلاگین DirectAdmin به توسعهدهندگان اجازه میدهد قابلیتهای جدیدی را به کنترلپنل اضافه کنند. یک پلاگین در واقع مجموعهای از فایلهاست که شامل اسکریپتها، قالبها و hookهایی است که در رابط کاربری DirectAdmin ادغام میشوند.
برای شروع، DirectAdmin یک نمونه پلاگین آماده ارائه میدهد:
- hello_world.tar.gz — نمونهای ساده برای آشنایی با ساختار پلاگین.
پلاگینها میتوانند:
- لینکهای جدید به منوهای DirectAdmin اضافه کنند
- اسکریپتهای سفارشی اجرا کنند
- خروجی خام یا فایل ارسال کنند
- هدر و فوتر پیشفرض DirectAdmin را حذف کنند
- کنترل کامل روی headerها و socket داشته باشند
2. اجرای PHP با php.ini اختصاصی
اگر پلاگین شما نیاز به php.ini اختصاصی دارد، میتوانید آن را در خط shebang مشخص کنید.
2.1 اجرای PHP با php.ini سفارشی
#!/usr/local/bin/php -nc /usr/local/directadmin/plugins/NAME/yourphp.ini
نکته مهم: گزینه -n باعث میشود PHP فایل php.ini اصلی سیستم را بارگذاری نکند و از بارگذاری دوباره ماژولها جلوگیری میکند.
2.2 اجرای PHP بدون هیچ php.ini
#!/usr/local/bin/php -n
این حالت فقط از تنظیمات داخلی PHP استفاده میکند.
2.3 رفع اشکال shebang
اگر اسکریپت اجرا نشد، احتمالاً فایل در حالت DOS ذخیره شده است. تبدیل کنید:
yum install dos2unix
dos2unix index.html
---
3. استفاده از $_GET و $_POST در پلاگینها
پلاگینهای DirectAdmin با PHP CLI اجرا میشوند (/usr/local/bin/php) و بهصورت پیشفرض آرایههای $_GET و $_POST را پر نمیکنند.
برای بازسازی این آرایهها از متغیرهای محیطی DirectAdmin استفاده کنید:
// Build $_GET
$_GET = Array();
$QUERY_STRING = getenv('QUERY_STRING');
if ($QUERY_STRING != "") {
parse_str(html_entity_decode($QUERY_STRING), $get_array);
foreach ($get_array as $key => $value) {
$_GET[urldecode($key)] = urldecode($value);
}
}
// Build $_POST
$_POST = Array();
$POST_STRING = getenv('POST');
if ($POST_STRING != "") {
parse_str(html_entity_decode($POST_STRING), $post_array);
foreach ($post_array as $key => $value) {
$_POST[urldecode($key)] = urldecode($value);
}
}
با این روش، پلاگین شما مانند یک اسکریپت PHP معمولی رفتار خواهد کرد.
---4. قالب اختیاری plugin_iframe.html
اگر پلاگین شما از گزینه زیر استفاده کند:
iframe=yes
DirectAdmin بهصورت پیشفرض خروجی را داخل یک iframe قرار میدهد. برای کنترل کامل HTML iframe، میتوانید قالب زیر را ایجاد کنید:
/usr/local/directadmin/data/templates/custom/plugin_iframe.html
نمونه قالب:
|OUTPUT|
این قالب برای دیباگ یا طراحی سفارشی بسیار کاربردی است.
---5. جمعبندی
سیستم پلاگین DirectAdmin بسیار سبک، منعطف و قدرتمند است. با ترکیب موارد زیر:
- اسکریپتهای سفارشی
- اجرای PHP با تنظیمات اختصاصی
- بازسازی GET/POST
- قالبهای سفارشی مانند plugin_iframe.html
میتوانید پلاگینهایی بسازید که کاملاً یکپارچه و حرفهای در DirectAdmin عمل کنند.
نوشته و پژوهش شده توسط دکتر شاهین صیامی