Example #1
0
/**
 * Request password
 *
 * @param string $adminName
 * @return bool TRUE on success, FALSE otherwise
 */
function requestPassword($adminName)
{
    /** @var $cfg iMSCP_Config_Handler_File */
    $cfg = iMSCP_Registry::get('config');
    $stmt = exec_query('SELECT `created_by`, `fname`, `lname`, `email` FROM `admin` WHERE `admin_name` = ?', $adminName);
    if (!$stmt->rowCount()) {
        return false;
    }
    $createdBy = $stmt->fields['created_by'];
    $adminFirstName = $stmt->fields['fname'];
    $adminLastName = $stmt->fields['lname'];
    $to = $stmt->fields['email'];
    $uniqueKey = uniqkeygen();
    setUniqKey($adminName, $uniqueKey);
    write_log('Lostpassword: '******': uniqkey created', E_USER_NOTICE);
    if ($createdBy == 0) {
        $createdBy = 1;
    }
    $data = get_lostpassword_activation_email($createdBy);
    $fromName = $data['sender_name'];
    $fromEmail = $data['sender_email'];
    $subject = $data['subject'];
    $message = $data['message'];
    $baseServerVhostPrefix = $cfg['BASE_SERVER_VHOST_PREFIX'];
    $baseServerVhost = $cfg['BASE_SERVER_VHOST'];
    $baseServerVhostPort = $baseServerVhostPrefix == 'http://' ? $cfg['BASE_SERVER_VHOST_HTTP_PORT'] : $cfg['BASE_SERVER_VHOST_HTTPS_PORT'];
    if ($fromName) {
        $from = encode_mime_header($fromName) . " <{$fromEmail}>";
    } else {
        $from = $fromEmail;
    }
    $link = $baseServerVhostPrefix . $baseServerVhost . ':' . $baseServerVhostPort . $_SERVER["PHP_SELF"] . '?key=' . $uniqueKey;
    $search = array();
    $replace = array();
    $search[] = '{USERNAME}';
    $replace[] = $adminName;
    $search[] = '{NAME}';
    $replace[] = "{$adminFirstName} {$adminLastName}";
    $search[] = '{LINK}';
    $replace[] = $link;
    $search[] = '{BASE_SERVER_VHOST_PREFIX}';
    $replace[] = $baseServerVhostPrefix;
    $search[] = '{BASE_SERVER_VHOST}';
    $replace[] = $baseServerVhost;
    $search[] = '{BASE_SERVER_VHOST_PORT}';
    $replace[] = $baseServerVhostPort;
    $subject = str_replace($search, $replace, $subject);
    $message = str_replace($search, $replace, $message);
    $headers = "From: {$from}\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/plain; charset=utf-8\r\n";
    $headers .= "Content-Transfer-Encoding: 8bit\r\n";
    $headers .= 'X-Mailer: i-MSCP Mailer';
    $mailResult = mail($to, encode_mime_header($subject), $message, $headers, "-f {$fromEmail}");
    $mailStatus = $mailResult ? 'OK' : 'NOT OK';
    $from = tohtml($from);
    write_log("Lostpassword send: To: |{$to}|, From: |{$from}|, Status: |{$mailStatus}| !", E_USER_NOTICE);
    return true;
}
function requestpassword($admin_name)
{
    $cfg = EasySCP_Registry::get('Config');
    $sql = EasySCP_Registry::get('Db');
    $query = "\n\t\tSELECT\n\t\t\t`created_by`, `fname`, `lname`, `email`\n\t\tFROM\n\t\t\t`admin`\n\t\tWHERE\n\t\t\t`admin_name` = ?\n\t";
    $res = exec_query($sql, $query, $admin_name);
    if ($res->recordCount() == 0) {
        return false;
    }
    $created_by = $res->fields['created_by'];
    $admin_fname = $res->fields['fname'];
    $admin_lname = $res->fields['lname'];
    $to = $res->fields['email'];
    $uniqkey = uniqkeygen();
    setUniqKey($admin_name, $uniqkey);
    write_log("Lostpassword: "******": uniqkey created", E_USER_NOTICE);
    if ($created_by == 0) {
        $created_by = 1;
    }
    $data = get_lostpassword_activation_email($created_by);
    $from_name = $data['sender_name'];
    $from_email = $data['sender_email'];
    $subject = $data['subject'];
    $message = $data['message'];
    $base_vhost = $cfg->BASE_SERVER_VHOST;
    $base_vhost_prefix = $cfg->BASE_SERVER_VHOST_PREFIX;
    if ($from_name) {
        $from = '"' . $from_name . "\" <" . $from_email . ">";
    } else {
        $from = $from_email;
    }
    $prot = isset($_SERVER['https']) ? 'https' : 'http';
    $link = $prot . '://' . $_SERVER["HTTP_HOST"] . $_SERVER["PHP_SELF"] . '?key=' . $uniqkey;
    $search = array();
    $replace = array();
    $search[] = '{USERNAME}';
    $replace[] = $admin_name;
    $search[] = '{NAME}';
    $replace[] = $admin_fname . " " . $admin_lname;
    $search[] = '{LINK}';
    $replace[] = $link;
    $search[] = '{BASE_SERVER_VHOST}';
    $replace[] = $base_vhost;
    $search[] = '{BASE_SERVER_VHOST_PREFIX}';
    $replace[] = $base_vhost_prefix;
    $subject = str_replace($search, $replace, $subject);
    $message = str_replace($search, $replace, $message);
    $headers = 'From: ' . $from . "\n";
    $headers .= "MIME-Version: 1.0\nContent-Type: text/plain; charset=utf-8\nContent-Transfer-Encoding: 8bit\n";
    $headers .= 'X-Mailer: EasySCP lostpassword mailer';
    $mail_result = mail($to, mb_encode_mimeheader($subject, 'UTF-8'), $message, $headers);
    $mail_status = $mail_result ? 'OK' : 'NOT OK';
    $from = tohtml($from);
    write_log("Lostpassword send: To: |{$to}|, From: |{$from}|, Status: |{$mail_status}| !", E_USER_NOTICE);
    return true;
}
Example #3
0
function lostpw($admin_name)
{
    global $sql;
    $query = <<<SQL_QUERY
        select
            created_by, fname, lname, email
        from
            admin
        where
            admin_name = ?

SQL_QUERY;
    $res = exec_query($sql, $query, array($admin_name));
    if ($res->RecordCount() == 1) {
        $created_by = $res->fields['created_by'];
        $admin_fname = $res->fields['fname'];
        $admin_lname = $res->fields['lname'];
        $to = $res->fields['email'];
        $uniqkey = uniqkeygen();
        $query = <<<SQL_QUERY
            update
              admin
            set
              uniqkey = ?
            where
              admin_name = ?
SQL_QUERY;
        $rs = exec_query($sql, $query, array($uniqkey, $admin_name));
        write_log("Lostpassword: "******" : uniqkey created");
        $query = <<<SQL_QUERY
  \t      select
    \t        admin_id, fname, lname, email
      \t  from
        \t    admin
        \twhere
          \t  admin_id = ?

SQL_QUERY;
        if ($created_by == 0) {
            $created_by = 1;
        }
        $res = exec_query($sql, $query, array($created_by));
        $admin_id = $res->fields['admin_id'];
        $from_fname = $res->fields['fname'];
        $from_lname = $res->fields['lname'];
        $from_email = $res->fields['email'];
        if ($from_fname && $from_lname) {
            $from = "{$from_fname} {$from_lname} <{$from_email}>";
        } else {
            $from = $from_email;
        }
        switch ($_SERVER["SERVER_PORT"]) {
            case "80":
                $prot = "http://";
                break;
            case "443":
                $prot = "https://";
                break;
        }
        $link = $prot . $_SERVER["HTTP_HOST"] . $_SERVER["PHP_SELF"] . "?i=" . $uniqkey;
        $query = <<<SQL_QUERY
        select
            subject, message
        from
            email_tpls
        where
            owner_id = ?
          and
            name = 'lostpw-msg-1'
SQL_QUERY;
        $res = exec_query($sql, $query, array($admin_id));
        $subject = $res->fields['subject'];
        $message = $res->fields['message'];
        if ($res->RecordCount() == 0) {
            $subject = "Auto message allert for lostpw ! {USERNAME}";
            $message = <<<MSG
Hello {NAME} !

Use this link to aktivate your new VHCS password:

{LINK}


Good Luck with VHCS Pro System
Hosting Provider Team

MSG;
        }
        $subject = preg_replace("/\\{USERNAME\\}/", $admin_name, $subject);
        $message = preg_replace("/\\{NAME\\}/", $admin_fname . " " . $admin_lname, $message);
        $message = preg_replace("/\\{LINK\\}/", $link, $message);
        $message = str_replace(chr(10), "", $message);
        $headers = "From: {$from}\r\n";
        $headers .= "Content-Type: text/plain\nContent-Transfer-Encoding: 7bit\n";
        $headers .= "X-Mailer: VHCS Pro lostpassword mailer";
        $mail_result = mail($to, $subject, $message, $headers);
        $mail_status = $mail_result ? 'OK' : 'NOT OK';
        $log_message = "Lostpassword send: To: |{$to}|, From: |{$from}|, Status: |{$mail_status}| !";
        write_log($log_message);
        return true;
    }
    return false;
}