/** * 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; }
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; }