Пример #1
0
function check_subdomain_permissions($sql, $user_id)
{
    list($dmn_id, $dmn_name, $dmn_gid, $dmn_uid, $dmn_created_id, $dmn_created, $dmn_last_modified, $dmn_mailacc_limit, $dmn_ftpacc_limit, $dmn_traff_limit, $dmn_sqld_limit, $dmn_sqlu_limit, $dmn_status, $dmn_als_limit, $dmn_subd_limit, $dmn_ip_id, $dmn_disk_limit, $dmn_disk_usage, $dmn_php, $dmn_cgi) = get_domain_default_props($sql, $user_id);
    $sub_cnt = get_domain_running_sub_cnt($sql, $dmn_id);
    if ($dmn_subd_limit != 0 && $sub_cnt >= $dmn_subd_limit) {
        set_page_message(tr('Subdomain limit expired!'));
        header("Location: manage_domains.php");
        die;
    }
    return $dmn_name;
    // Will be used in subdmn_exists()
}
function get_domain_running_props_cnt(&$sql, $domain_id)
{
    $sub_cnt = get_domain_running_sub_cnt($sql, $domain_id);
    $als_cnt = get_domain_running_als_cnt($sql, $domain_id);
    list($mail_acc_cnt, $dmn_mail_acc_cnt, $sub_mail_acc_cnt, $als_mail_acc_cnt) = get_domain_running_mail_acc_cnt($sql, $domain_id);
    list($ftp_acc_cnt, $dmn_ftp_acc_cnt, $sub_ftp_acc_cnt, $als_ftp_acc_cnt) = get_domain_running_ftp_acc_cnt($sql, $domain_id);
    list($sqld_acc_cnt, $sqlu_acc_cnt) = get_domain_running_sql_acc_cnt($sql, $domain_id);
    return array($sub_cnt, $als_cnt, $mail_acc_cnt, $ftp_acc_cnt, $sqld_acc_cnt, $sqlu_acc_cnt);
}
Пример #3
0
/**
 * Generates page
 *
 * @param iMSCP_pTemplate $tpl Template instance engine
 * @param int $domainId Domain unique identifier
 * @return void
 */
function reseller_generatePage($tpl, $domainId)
{
    $stmt = exec_query('
            SELECT
                domain_admin_id
            FROM
                domain
            INNER JOIN
                admin ON(admin_id = domain_admin_id)
            WHERE
                domain_id = ?
            AND
                created_by = ?
        ', array($domainId, $_SESSION['user_id']));
    if (!$stmt->rowCount()) {
        showBadRequestErrorPage();
    }
    $domainAdminId = $stmt->fields['domain_admin_id'];
    $domainProperties = get_domain_default_props($domainAdminId, $_SESSION['user_id']);
    // Domain IP address info
    $stmt = exec_query("SELECT ip_number FROM server_ips WHERE ip_id = ?", $domainProperties['domain_ip_id']);
    if (!$stmt->rowCount()) {
        $domainIpAddr = tr('Not found.');
    } else {
        $domainIpAddr = $stmt->fields['ip_number'];
    }
    $domainStatus = $domainProperties['domain_status'];
    // Domain status
    if ($domainStatus == 'ok' || $domainStatus == 'disabled' || $domainStatus == 'todelete' || $domainStatus == 'toadd' || $domainStatus == 'torestore' || $domainStatus == 'tochange' || $domainStatus == 'toenable' || $domainStatus == 'todisable') {
        $domainStatus = '<span style="color:green">' . tohtml(translate_dmn_status($domainStatus)) . '</span>';
    } else {
        $domainStatus = '<b><font size="3" color="red">' . $domainStatus . "</font></b>";
    }
    // Get total domain traffic usage in bytes
    $query = "\n        SELECT\n            IFNULL(SUM(dtraff_web), 0) AS dtraff_web, IFNULL(SUM(dtraff_ftp), 0) AS dtraff_ftp,\n            IFNULL(SUM(dtraff_mail), 0) AS dtraff_mail, IFNULL(SUM(dtraff_pop), 0) AS dtraff_pop\n        FROM\n            domain_traffic\n        WHERE\n            domain_id = ?\n        AND\n            dtraff_time BETWEEN ? AND ?\n    ";
    $stmt = exec_query($query, array($domainProperties['domain_id'], getFirstDayOfMonth(), getLastDayOfMonth()));
    if ($stmt->rowCount()) {
        $trafficUsageBytes = $stmt->fields['dtraff_web'] + $stmt->fields['dtraff_ftp'] + $stmt->fields['dtraff_mail'] + $stmt->fields['dtraff_pop'];
    } else {
        $trafficUsageBytes = 0;
    }
    // Get limits in bytes
    $trafficLimitBytes = $domainProperties['domain_traffic_limit'] * 1048576;
    $diskspaceLimitBytes = $domainProperties['domain_disk_limit'] * 1048576;
    // Get usages in percent
    $trafficUsagePercent = make_usage_vals($trafficUsageBytes, $trafficLimitBytes);
    $diskspaceUsagePercent = make_usage_vals($domainProperties['domain_disk_usage'], $diskspaceLimitBytes);
    // Get Email quota info
    list($quota, $quotaLimit) = reseller_gen_mail_quota_limit_mgs($domainAdminId);
    # Features
    $trEnabled = '<span style="color:green">' . tr('Enabled') . '</span>';
    $trDisabled = '<span style="color:red">' . tr('Disabled') . '</span>';
    $tpl->assign(array('DOMAIN_ID' => $domainId, 'VL_DOMAIN_NAME' => tohtml(decode_idna($domainProperties['domain_name'])), 'VL_DOMAIN_IP' => tohtml($domainIpAddr), 'VL_STATUS' => $domainStatus, 'VL_PHP_SUPP' => $domainProperties['domain_php'] == 'yes' ? $trEnabled : $trDisabled, 'VL_PHP_EDITOR_SUPP' => $domainProperties['phpini_perm_system'] == 'yes' ? $trEnabled : $trDisabled, 'VL_CGI_SUPP' => $domainProperties['domain_cgi'] == 'yes' ? $trEnabled : $trDisabled, 'VL_DNS_SUPP' => $domainProperties['domain_dns'] == 'yes' ? $trEnabled : $trDisabled, 'VL_EXT_MAIL_SUPP' => $domainProperties['domain_external_mail'] == 'yes' ? $trEnabled : $trDisabled, 'VL_SOFTWARE_SUPP' => $domainProperties['domain_software_allowed'] == 'yes' ? $trEnabled : $trDisabled, 'VL_BACKUP_SUP' => translate_limit_value($domainProperties['allowbackup']), 'VL_TRAFFIC_PERCENT' => $trafficUsagePercent, 'VL_TRAFFIC_USED' => bytesHuman($trafficUsageBytes), 'VL_TRAFFIC_LIMIT' => bytesHuman($trafficLimitBytes), 'VL_DISK_PERCENT' => $diskspaceUsagePercent, 'VL_DISK_USED' => bytesHuman($domainProperties['domain_disk_usage']), 'VL_DISK_LIMIT' => bytesHuman($diskspaceLimitBytes), 'VL_MAIL_ACCOUNTS_USED' => get_domain_running_mail_acc_cnt($domainId), 'VL_MAIL_ACCOUNTS_LIMIT' => translate_limit_value($domainProperties['domain_mailacc_limit']), 'VL_MAIL_QUOTA_USED' => $quota, 'VL_MAIL_QUOTA_LIMIT' => $domainProperties['domain_mailacc_limit'] != '-1' ? $quotaLimit : tr('Disabled'), 'VL_FTP_ACCOUNTS_USED' => get_customer_running_ftp_acc_cnt($domainAdminId), 'VL_FTP_ACCOUNTS_LIMIT' => translate_limit_value($domainProperties['domain_ftpacc_limit']), 'VL_SQL_DB_ACCOUNTS_USED' => get_domain_running_sqld_acc_cnt($domainId), 'VL_SQL_DB_ACCOUNTS_LIMIT' => translate_limit_value($domainProperties['domain_sqld_limit']), 'VL_SQL_USER_ACCOUNTS_USED' => get_domain_running_sqlu_acc_cnt($domainId), 'VL_SQL_USER_ACCOUNTS_LIMIT' => translate_limit_value($domainProperties['domain_sqlu_limit']), 'VL_SUBDOM_ACCOUNTS_USED' => get_domain_running_sub_cnt($domainId), 'VL_SUBDOM_ACCOUNTS_LIMIT' => translate_limit_value($domainProperties['domain_subd_limit']), 'VL_DOMALIAS_ACCOUNTS_USED' => get_domain_running_als_cnt($domainId), 'VL_DOMALIAS_ACCOUNTS_LIMIT' => translate_limit_value($domainProperties['domain_alias_limit'])));
}
Пример #4
0
/**
 * Get domain limit properties
 *
 * @param  int $domainId Domain unique identifier
 * @return array
 */
function get_domain_running_props_cnt($domainId)
{
    $subCount = get_domain_running_sub_cnt($domainId);
    $alsCount = get_domain_running_als_cnt($domainId);
    list($mailAccCount) = get_domain_running_mail_acc_cnt($domainId);
    // Transitional query - Will be removed asap
    $stmt = exec_query('SELECT domain_admin_id FROM domain WHERE domain_id = ?', $domainId);
    $ftpAccCount = get_customer_running_ftp_acc_cnt($stmt->fields['domain_admin_id']);
    list($sqlDbCount, $sqlUserCount) = get_domain_running_sql_acc_cnt($domainId);
    return array($subCount, $alsCount, $mailAccCount, $ftpAccCount, $sqlDbCount, $sqlUserCount);
}
Пример #5
0
/**
 * Returns user's properties from database.
 *
 * @param int $adminId Customer unique identifier
 * @return array An array that contain user's properties
 */
function get_user_props($adminId)
{
    /** @var $cfg iMSCP_Config_Handler_File */
    $cfg = iMSCP_Registry::get('config');
    $stmt = exec_query('SELECT * FROM domain WHERE domain_id = ?', $adminId);
    if (!$stmt->rowCount()) {
        return array_fill(0, 14, 0);
    }
    $data = $stmt->fetchRow();
    $sub_current = get_domain_running_sub_cnt($adminId);
    $sub_max = $data['domain_subd_limit'];
    $als_current = records_count('domain_aliasses', 'domain_id', $adminId);
    $als_max = $data['domain_alias_limit'];
    if ($cfg['COUNT_DEFAULT_EMAIL_ADDRESSES']) {
        // Catch all is not a mailbox and haven't to be count
        $mail_current = records_count('mail_users', 'mail_type NOT RLIKE \'_catchall\' AND domain_id', $adminId);
    } else {
        $where = "\n\t\t\t\tmail_acc != 'abuse'\n\t\t\tAND\n\t\t\t\tmail_acc != 'postmaster'\n\t\t\tAND\n\t\t\t\tmail_acc != 'webmaster'\n\t\t\tAND\n\t\t\t\tmail_type NOT RLIKE '_catchall'\n\t\t\tAND\n\t\t\t\tdomain_id\n\t\t";
        $mail_current = records_count('mail_users', $where, $adminId);
    }
    $mail_max = $data['domain_mailacc_limit'];
    $ftp_current = sub_records_rlike_count('domain_name', 'domain', 'domain_id', $adminId, 'userid', 'ftp_users', 'userid', '@', '');
    $ftp_current += sub_records_rlike_count('alias_name', 'domain_aliasses', 'domain_id', $adminId, 'userid', 'ftp_users', 'userid', '@', '');
    $ftp_max = $data['domain_ftpacc_limit'];
    $sql_db_current = records_count('sql_database', 'domain_id', $adminId);
    $sql_db_max = $data['domain_sqld_limit'];
    $sql_user_current = get_domain_running_sqlu_acc_cnt($adminId);
    $sql_user_max = $data['domain_sqlu_limit'];
    $traff_max = $data['domain_traffic_limit'];
    $disk_max = $data['domain_disk_limit'];
    return array($sub_current, $sub_max, $als_current, $als_max, $mail_current, $mail_max, $ftp_current, $ftp_max, $sql_db_current, $sql_db_max, $sql_user_current, $sql_user_max, $traff_max, $disk_max);
}
Пример #6
0
    } catch (iMSCP_Exception_Database $e) {
        $db->rollBack();
        write_log(sprintf('System was unable to create the `%s` subdomain: %s', $subdomainName, $e->getMessage()), E_USER_ERROR);
        set_page_message('Could not create subdomain. An unexpected error occurred.', 'error');
        return false;
    }
}
/***********************************************************************************************************************
 * Main
 */
require_once 'imscp-lib.php';
iMSCP_Events_Aggregator::getInstance()->dispatch(iMSCP_Events::onClientScriptStart);
check_login('user');
customerHasFeature('subdomains') or showBadRequestErrorPage();
$mainDmnProps = get_domain_default_props($_SESSION['user_id']);
$subdomainsCount = get_domain_running_sub_cnt($mainDmnProps['domain_id']);
if ($mainDmnProps['domain_subd_limit'] != 0 && $subdomainsCount >= $mainDmnProps['domain_subd_limit']) {
    set_page_message(tr('You have reached the maximum number of subdomains allowed by your subscription.'), 'warning');
    redirectTo('domains_manage.php');
}
if (!empty($_POST) && client_addSubdomain()) {
    set_page_message(tr('Subdomain successfully scheduled for addition.'), 'success');
    redirectTo('domains_manage.php');
}
$tpl = new iMSCP_pTemplate();
$tpl->define_dynamic(array('layout' => 'shared/layouts/ui.tpl', 'page' => 'client/subdomain_add.tpl', 'page_message' => 'layout', 'parent_domain' => 'page', 'shared_mount_point_domain' => 'page'));
$tpl->assign(array('TR_PAGE_TITLE' => tr('Client / Domains / Add Subdomain'), 'TR_SUBDOMAIN' => tr('Subdomain'), 'TR_SUBDOMAIN_NAME' => tr('Subdomain name'), 'TR_SHARED_MOUNT_POINT' => tr('Shared mount point'), 'TR_SHARED_MOUNT_POINT_TOOLTIP' => tr('Allows to share the mount point of another domain.'), 'TR_URL_FORWARDING' => tr('URL forwarding'), 'TR_URL_FORWARDING_TOOLTIP' => tr('Allows to forward any request made to this subdomain to a specific URL. Be aware that when this option is in use, no Web folder is created for the subdomain.'), 'TR_FORWARD_TO_URL' => tr('Forward to URL'), 'TR_YES' => tr('Yes'), 'TR_NO' => tr('No'), 'TR_HTTP' => 'http://', 'TR_HTTPS' => 'https://', 'TR_FTP' => 'ftp://', 'TR_ADD' => tr('Add'), 'TR_CANCEL' => tr('Cancel')));
generateNavigation($tpl);
client_generatePage($tpl);
generatePageMessage($tpl);
$tpl->parse('LAYOUT_CONTENT', 'page');
Пример #7
0
/**
 * Get user's properties from Database
 *
 * @param int		$user_id	user's ID
 * @return Array				user's properies
 */
function get_user_props($user_id)
{
    $cfg = EasySCP_Registry::get('Config');
    $sql = EasySCP_Registry::get('Db');
    $query = "\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\t\t`domain`\n\t\tWHERE\n\t\t\t`domain_id` = ?\n\t";
    $res = exec_query($sql, $query, $user_id);
    if ($res->rowCount() == 0) {
        return array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    }
    $data = $res->fetchRow();
    $sub_current = get_domain_running_sub_cnt($sql, $user_id);
    $sub_max = $data['domain_subd_limit'];
    $als_current = records_count('domain_aliasses', 'domain_id', $user_id);
    $als_max = $data['domain_alias_limit'];
    $mail_current = records_count('mail_users', 'mail_type NOT RLIKE \'_catchall\' AND domain_id', $user_id);
    $mail_max = $data['domain_mailacc_limit'];
    $ftp_current = sub_records_rlike_count('domain_name', 'domain', 'domain_id', $user_id, 'userid', 'ftp_users', 'userid', '@', '');
    //We don't need this query, because we don't have ftpusers for a subdomain! Otherwise the counters count wrong - TheCry
    /*$ftp_current += sub_records_rlike_count('subdomain_name', 'subdomain', 'domain_id', $user_id,
    		'userid', 'ftp_users', 'userid', '@', ''
    		);*/
    $ftp_current += sub_records_rlike_count('alias_name', 'domain_aliasses', 'domain_id', $user_id, 'userid', 'ftp_users', 'userid', '@', '');
    $ftp_max = $data['domain_ftpacc_limit'];
    $sql_db_current = records_count('sql_database', 'domain_id', $user_id);
    $sql_db_max = $data['domain_sqld_limit'];
    $sql_user_current = get_domain_running_sqlu_acc_cnt($sql, $user_id);
    $sql_user_max = $data['domain_sqlu_limit'];
    $traff_max = $data['domain_traffic_limit'];
    $disk_max = $data['domain_disk_limit'];
    // Make return data
    return array($sub_current, $sub_max, $als_current, $als_max, $mail_current, $mail_max, $ftp_current, $ftp_max, $sql_db_current, $sql_db_max, $sql_user_current, $sql_user_max, $traff_max, $disk_max);
}
Пример #8
0
/**
 *
 * @param <type> $user_id
 * @return <type>
 */
function check_subdomain_permissions($user_id)
{
    $sql = EasySCP_Registry::get('Db');
    //TODO: check proper handling for alias subdomain
    $dmn_props = get_domain_default_props($user_id);
    $dmn_id = $dmn_props['domain_id'];
    $dmn_name = $dmn_props['domain_name'];
    $dmn_subd_limit = $dmn_props['domain_subd_limit'];
    $sub_cnt = get_domain_running_sub_cnt($sql, $dmn_id);
    if ($dmn_subd_limit != 0 && $sub_cnt >= $dmn_subd_limit) {
        set_page_message(tr('Subdomains limit reached!'), 'warning');
        user_goto('domains_manage.php');
    }
    if (@$_POST['dmn_type'] == 'als') {
        $query_alias = "\n\t\t\tSELECT\n\t\t\t\t`alias_name`\n\t\t\tFROM\n\t\t\t\t`domain_aliasses`\n\t\t\tWHERE\n\t\t\t\t`alias_id` = ?\n\t\t;";
        $rs = exec_query($sql, $query_alias, $_POST['als_id']);
        return $rs->fields['alias_name'];
    }
    return $dmn_name;
    // Will be used in subdmn_exists()
}