Ejemplo n.º 1
0
<?php

require_once 'lib/init.php';
$norender = false;
initVars('domain', 'docroot');
$error_documents = array(401, 403, 404, 500);
header('Cache-Control: private');
switch ($task) {
    case 'add':
        if (!checkPackage('site')) {
            setmsg(t('The package limitation reached.'), 'warning');
        }
        $dirs = ZFile::getUserDirs($me);
        if (checktoken()) {
            $domain = $_REQUEST['domain'];
            $docroot = $_REQUEST['docroot'];
            // check domain
            $break = false;
            if (true !== ($res = ZVhosts::chkDomain($domain))) {
                $err['domain'] = t('Domain Invalid.');
                if ($res == 'occupied') {
                    $err['domain'] = t('Domain Occupied.');
                }
                $break = true;
            }
            // check docroot
            if (!in_array($docroot, $dirs)) {
                $err['docroot'] = t('Please select a valid document root.');
                $break = true;
            }
            $docroot = str_replace('~/', "/home/{$me}/", $docroot);
Ejemplo n.º 2
0
     break;
 case 'edit':
     $name = isset($_REQUEST['name']) ? $_REQUEST['name'] : '';
     $name = preg_replace("/[^a-z0-9_]+/i", "", $name);
     if (!$name) {
         redirect('ftp.php');
     }
     $password = $_REQUEST['password'];
     $owner = strtok($name, '_');
     $users = ZUser::getUsers();
     $account = ZFtp::getFtpAccount($name);
     if (!$account) {
         setmsg(t('No such user.'));
     }
     $myuid = ZUser::getuid($owner);
     $dirs = ZFile::getUserDirs($owner);
     $docroot = trim($account->home);
     $docroot = str_replace("/home/{$owner}", '~', $docroot);
     if (checktoken()) {
         $op = $_REQUEST['op'];
         if ($op == 'remove') {
             if (ZFtp::removeFtpAccount($name)) {
                 setmsg(t('Ftp Account Deleted.'), 'notice', 'ftp.php');
             }
         } else {
             if ('suspend' == $op) {
                 if (ZFtp::suspendFtpUser($name, !intval($_REQUEST['suspend']))) {
                     setmsg('', 'notice');
                 } else {
                     setmsg(t('Error'));
                 }
Ejemplo n.º 3
0
function getUserDirs($user)
{
    return ZFile::getUserDirs($user);
}
Ejemplo n.º 4
0
 function getUserDirs($user)
 {
     global $fakeroot;
     $arr = ZFile::getAllDirs($fakeroot . '/home/' . $user);
     if (!$arr) {
         $arr = array();
     }
     array_unshift($arr, '~/');
     foreach ($arr as $k => $v) {
         $arr[$k] = str_replace('\\', '/', str_replace(realpath($fakeroot . '/home/' . $user), '~', $v));
     }
     return $arr;
 }
Ejemplo n.º 5
0
function syncQuota()
{
    global $pdo;
    $arr = file(ZFile::getfile('/etc/passwd'));
    $uids = array();
    foreach ($arr as $v) {
        $tmp = explode(':', $v);
        $uids[$tmp[0]] = $tmp[2];
        $pdo->update('user', array('uid' => $tmp[2], 'gid' => $tmp[3]), "user='******'");
    }
    $sql = "SELECT * FROM user";
    $users = $pdo->fetchAll($sql);
    foreach ($users as $v) {
        $user = $v->user;
        $quota = ZPackage::getPackage($v->package)->space;
        if (preg_match('/^[\\d\\.]+$/', $quota)) {
            $quota .= 'G';
        }
        $kb = intval(human2bytes($quota) / 1024);
        $uid = $uids[$user];
        if ($uid < 9000) {
            continue;
        }
        if ($quota == -1) {
            $kb = 0;
        }
        //var_dump($kb, $quota,human2bytes($quota.'GB'));echo '<hr>';
        shell_exec("quotaquery set {$uid} {$kb},{$kb},0,0");
        shell_exec("usermod -s /zh/bin/shell_{$v->shell} {$user}");
    }
    //exit;
}