~4 min read • Updated Mar 1, 2026
1. کنترل کامل دستورات کاربران با all_pre.sh
اسکریپت all_pre.sh یکی از قدرتمندترین ابزارهای سفارشیسازی در DirectAdmin است. این اسکریپت قبل از اجرای هر دستور /CMD_* اجرا میشود.
مسیر فایل:
/usr/local/directadmin/scripts/custom/all_pre.sh
اگر اسکریپت مقدار 0 برگرداند → دستور مجاز است. اگر مقدار غیر صفر برگرداند → دستور متوقف میشود و پیام اسکریپت به کاربر نمایش داده میشود.
مثال: جلوگیری از ساخت ایمیل با quota بیشتر از 50MB
#!/bin/sh
if [ "$command" = "/CMD_EMAIL_POP" ] && [ "$domain" = "thedomainyouwant.com" ]; then
if [ "$action" = "create" ] || [ "$action" = "modify" ]; then
if [ "$quota" -eq 0 ]; then
echo "you cant have unlimited quota";
exit 1;
fi
if [ "$quota" -gt 50 ]; then
echo "you cant have more than a 50 meg quota";
exit 2;
fi
fi
fi
exit 0;
قابل اجرا:
chmod 755 /usr/local/directadmin/scripts/custom/all_pre.sh
این روش برای محدودسازی هر نوع دستور قابل استفاده است.
---
2. جلوگیری از ایجاد سابدامین روی دامنه شما
اگر نمیخواهید کاربران بتوانند سابدامینهایی روی دامنه اصلی شما ایجاد کنند، از domain_create_pre.sh استفاده کنید.
فایل:
/usr/local/directadmin/scripts/custom/domain_create_pre.sh
محتوا:
#!/usr/local/bin/php
$reserved = "mydomain.com";
$domain = getenv("domain");
$res = strstr($domain, ".".$reserved);
if ($res === FALSE) { exit(0); }
else
{
echo "You may not create a sub domain on $reserved";
exit(1);
}
?>
قابل اجرا:
chmod 755 /usr/local/directadmin/scripts/custom/domain_create_pre.sh
این اسکریپت با سطح root اجرا میشود، بنابراین میتوانید بررسیهای پیشرفتهتری نیز انجام دهید.
---
3. محدود کردن تعداد دامنههای کل سرور
برای جلوگیری از ایجاد بیش از تعداد مشخصی دامنه در کل سرور:
فایل:
/usr/local/directadmin/scripts/custom/domain_create_pre.sh
محتوا:
#!/bin/sh
MAX_DOMAINS=10
CURRENT=`ls -la /etc/virtual/ | grep drwx | grep -v majordomo | grep -v usage | grep -c drwx`
if [ "$CURRENT" -ge "$MAX_DOMAINS" ]; then
echo "Maximum number of domains ($MAX_DOMAINS) has already been created. Cannot create any more."
exit 1;
fi
exit 0;
قابل اجرا:
chmod 755 /usr/local/directadmin/scripts/custom/domain_create_pre.sh
برای جلوگیری از ایجاد کاربر بدون دامنه، آن را به user_create_pre.sh لینک کنید:
cd /usr/local/directadmin/scripts/custom
ln -s domain_create_pre.sh user_create_pre.sh
---
4. سفارشیسازی index.html پیشفرض برای دامنههای جدید
هنگام ایجاد دامنه جدید، فایل index.html از مسیر زیر کپی میشود:
/home/RESELLERNAME/domains/default/index.html
توکنهای قابل استفاده:
- |DOMAIN|
- |USERNAME|
- |DATECREATED|
- |IP|
تمام فایلها باید world-readable باشند (پرمیشن 755).
---
5. اجرای اسکریپتهای توکار در index.html
میتوانید اسکریپتهای PHP را داخل index.html اجرا کنید:
|$/usr/local/bin/php
DONE|
این اسکریپت با سطح دسترسی کاربر اجرا میشود.
---
6. ویرایش همه قالبها، پیامها و فایلهای پیشفرض
قالبها در مسیر زیر قرار دارند:
/usr/local/directadmin/data/templates
برای جلوگیری از overwrite شدن پس از آپدیت، فایلها را به مسیر custom منتقل کنید:
/usr/local/directadmin/data/templates/custom
برای سفارشیسازی کامل default directory:
/usr/local/directadmin/data/templates/custom/default/*
---
7. ساخت index.html سفارشی برای سابدامینها
چون DirectAdmin قالب پیشفرض برای سابدامین ندارد، باید از اسکریپت post استفاده کنید.
فایل:
/usr/local/directadmin/scripts/custom/subdomain_create_post.sh
محتوا:
#!/bin/sh
INDEX=/home/$username/domains/$domain/public_html/$subdomain/index.html
rm -f $INDEX
cp /your/custom/index.html $INDEX
chown $username:$username $INDEX
exit 0;
قابل اجرا:
chmod 755 /usr/local/directadmin/scripts/custom/subdomain_create_post.sh
---
8. جلوگیری از تغییر رمز عبور توسط کاربران
برای جلوگیری از تغییر رمز توسط خود کاربر (اما اجازه تغییر توسط سازنده):
فایل:
/usr/local/directadmin/scripts/custom/user_password_change_pre.sh
محتوا:
#!/bin/sh
if [ "$called_by_self" = "1" ]; then
echo "You cannot change your own password.";
exit 1;
fi
exit 0;
قابل اجرا:
chmod 755 /usr/local/directadmin/scripts/custom/user_password_change_pre.sh
Written & researched by Dr. Shahin Siami