Тема: Использование DirectAdmin API на примере вкл/выкл пользователя
Небольшой пример как сделать suspend|unsuspend почтовому ящику. Этот скрипт работать в совокупность со системой блокирования спаммеров.
основной класс для общения с DA это Socket communication class (httpsocket.php) взят с официального сайта и не модифицирован. Для удобства я сделал еще include.php
# cat include.php
<?php
$server_ip="da.domain.tld";
$server_login="admin";
$server_pass="super_secret_password";
$server_ssl="Y";
function printout ($result) {
if (@$result['error'] != "0") {
echo "ERROR\n";
if (@$result['text'] != "") echo "TEXT: ".@$result['text']."\n";
if (@$result['details'] != "") echo "INFO: ".@$result['details']."\n";
} else {
echo "OK\n";
if (@$result['text'] != "") echo "TEXT: ".@$result['text']."\n";
if (@$result['details'] != "") echo "INFO: ".@$result['details']."\n";
}
}
?>
# cat suspend_email.php
#!/usr/local/bin/php
<?php
if ($argc < 4)
{
echo "Suspending/Unsuspending email account\n";
echo "Usage: $argv[0] <reseller_user_name> <email_address> <suspend|unsuspend>\n";
exit (1);
}
include 'httpsocket.php';
include 'include.php';
$reseller_user = $argv[1];
$server_login = $server_login."|".$reseller_user;
$split = (explode("@", $argv[2]));
$email_user = $split[0];
$email_domains = $split[1];
$email_action = ($argv[3] == "suspend" ? "Suspend" : "Unsuspend");
$sock = new HTTPSocket;
if ($server_ssl == 'Y') {
$sock->connect("ssl://".$server_ip, 2222);
}
else {
$sock->connect($server_ip, 2222);
}
$sock->set_login($server_login,$server_pass);
$sock->set_method('POST');
$sock->query(
'/CMD_API_POP',
array(
"user" => $email_user,
strtolower($email_action) => $email_action,
"domain" => $email_domains,
"action" => "delete"
)
);
$result=$sock->fetch_parsed_body();
printout ($result);
exit(0);
?>
Пример
# ./suspend_email.php user1397 [email protected] suspend
OK
TEXT: Accounts Suspended
# cat /etc/virtual/alan.bububu.tn/passwd
buka:!$1$EDHTU$QCKP/yAeAeg0STI5qHbyr1:695:12:suspended:/home/user1397/imap/alan.bububu.tn/buka:/bin/false
Появился "!" - пользователь выключен
# ./suspend_email.php user1397 [email protected] unsuspend
OK
TEXT: Accounts Unuspended
cat /etc/virtual/alan.bububu.tn/passwd
buka:$1$EDHTU$QCKP/yAeAeg0STI5qHbyr1:695:12::/home/user1397/imap/alan.bububu.tn/buka:/bin/false
Пропал "!" - пользователь включен