mirror of
https://github.com/moodle/moodle.git
synced 2025-01-18 22:08:20 +01:00
Merge branch 'MDL-32985' of git://github.com/merrill-oakland/moodle
This commit is contained in:
commit
4baa746eae
@ -174,9 +174,8 @@ function cron_run() {
|
||||
|
||||
// Send login failures notification - brute force protection in moodle is weak,
|
||||
// we should at least send notices early in each cron execution
|
||||
if (!empty($CFG->notifyloginfailures)) {
|
||||
notify_login_failures();
|
||||
mtrace(' Notified login failured');
|
||||
if (notify_login_failures()) {
|
||||
mtrace(' Notified login failures');
|
||||
}
|
||||
|
||||
|
||||
@ -603,12 +602,23 @@ function cron_bc_hack_plugin_functions($plugintype, $plugins) {
|
||||
* Note that this function must be only executed from the cron script
|
||||
* It uses the cache_flags system to store temporary records, deleting them
|
||||
* by name before finishing
|
||||
*
|
||||
* @return bool True if executed, false if not
|
||||
*/
|
||||
function notify_login_failures() {
|
||||
global $CFG, $DB, $OUTPUT;
|
||||
|
||||
if (empty($CFG->notifyloginfailures)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$recip = get_users_from_config($CFG->notifyloginfailures, 'moodle/site:config');
|
||||
|
||||
// If it has been less than an hour, or if there are no recipients, don't execute.
|
||||
if (((time() - HOURSECS) < $CFG->lastnotifyfailure) || !is_array($recip) || count($recip) <= 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (empty($CFG->lastnotifyfailure)) {
|
||||
$CFG->lastnotifyfailure=0;
|
||||
}
|
||||
@ -685,10 +695,8 @@ function notify_login_failures() {
|
||||
}
|
||||
$rs->close();
|
||||
|
||||
// If we haven't run in the last hour and
|
||||
// we have something useful to report and we
|
||||
// are actually supposed to be reporting to somebody
|
||||
if ((time() - HOURSECS) > $CFG->lastnotifyfailure && $count > 0 && is_array($recip) && count($recip) > 0) {
|
||||
// If we have something useful to report.
|
||||
if ($count > 0) {
|
||||
$site = get_site();
|
||||
$subject = get_string('notifyloginfailuressubject', '', format_string($site->fullname));
|
||||
// Calculate the complete body of notification (start + messages + end)
|
||||
@ -710,4 +718,6 @@ function notify_login_failures() {
|
||||
|
||||
// Finally, delete all the temp records we have created in cache_flags
|
||||
$DB->delete_records_select('cache_flags', "flagtype IN ('login_failure_by_ip', 'login_failure_by_info')");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user