<?php
/*
/ ReGenerate && submit by email password reset
/ autor: Baco <baco@brocart.net>
/ 21.08.2021: run: YOU_DOMAIN /regen.php?code=3245gjk345kjg523kj5
*/
$mycode = '3245gjk345kjg523kj5';
if (!isset($_SERVER['DOCUMENT_ROOT']) || $_SERVER['DOCUMENT_ROOT'] == false) {
$_SERVER['DOCUMENT_ROOT'] = dirname(__FILE__);
}
if (!isset($_GET['code']) || ($_GET['code'] != $mycode)) {
exit(0);
}
require_once($_SERVER['DOCUMENT_ROOT'] . '/config.php');
require_once(DIR_SYSTEM . 'startup.php');
$registry = new Registry();
$config = new Config();
$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$query = $db->query("SELECT * FROM `" . DB_PREFIX . "setting` WHERE store_id = '0' ORDER BY store_id ASC");
foreach ($query->rows as $result) {
if (!$result['serialized']) {
$config->set($result['key'], $result['value']);
} else {
$config->set($result['key'], json_decode($result['value'], true));
}
}
$logger = new Log($config->get('config_error_filename'));
$query = $db->query("SELECT email FROM " . DB_PREFIX . "customer WHERE password IS NULL OR LTRIM(RTRIM(password)) = '' ORDER BY email DESC");
if ($query->num_rows) {
foreach ($query->rows as $client) {
$code = gen(40);
$mail = new Mail($config->get('config_mail_engine'));
$template = new Template('twig');
$db->query("UPDATE `" . DB_PREFIX . "customer` SET code = '" . $code . "' WHERE LCASE(email) = '" . $db->escape(utf8_strtolower($client['email'])) . "'");
send($config, $code, $client['email'], $mail, $template, $logger);
}
}
function send($config, $code, $email, $mail, $template, $logger) {
$data['text_greeting'] = 'Здравствуйте! Поменяйте пароль перейдя по указанной ссылке!';
$data['reset'] = HTTPS_SERVER . 'index.php?route=common/reset&code=' . $code;
$data['ip'] = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
$mail->parameter = $config->get('config_mail_parameter');
$mail->smtp_hostname = $config->get('config_mail_smtp_hostname');
$mail->smtp_username = $config->get('config_mail_smtp_username');
$mail->smtp_password = html_entity_decode($config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
$mail->smtp_port = $config->get('config_mail_smtp_port');
$mail->smtp_timeout = $config->get('config_mail_smtp_timeout');
$mail->setTo($email);
$mail->setFrom($config->get('config_email'));
$mail->setSender(html_entity_decode($config->get('config_name'), ENT_QUOTES, 'UTF-8'));
$mail->setSubject('Просьба поменять пароль, для входа в кабинет!');
foreach ($data as $key => $value) {
$template->set($key, $value);
}
$mail->setText($template->render($config->get('theme_default_directory') . '/template/mail/forgotten'));
$mail->send();
$logger->write('успешно выслано для: ' . $email);
}
function gen($length = 32) {
$string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$max = strlen($string) - 1;
$token = '';
for ($i = 0; $i < $length; $i++) {
$token .= $string[mt_rand(0, $max)];
}
return $token;
}
echo 'Job well done, bro!';