Тема: Использование 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

Пропал "!" - пользователь включен