Skip to content

Commit

Permalink
Fix: keys.
Browse files Browse the repository at this point in the history
  • Loading branch information
ardavydov committed May 28, 2021
1 parent d7f18ab commit d667cc8
Showing 1 changed file with 32 additions and 29 deletions.
61 changes: 32 additions & 29 deletions cleantalk/cleantalkMod.php
Original file line number Diff line number Diff line change
Expand Up @@ -819,43 +819,46 @@ function cleantalk_get_checkjs_code(){
$api_key = isset($modSettings['cleantalk_api_key']) ? $modSettings['cleantalk_api_key'] : null;
$js_keys = isset($modSettings['cleantalk_js_keys']) ? json_decode($modSettings['cleantalk_js_keys'], true) : null;

$keys = $js_keys['keys'];
$keys_checksum = md5(json_encode($keys));

$key = rand();
$latest_key_time = 0;

if ($keys && is_array($keys) && !empty($keys))
{
foreach ($keys as $k => $t) {
if ($js_keys && isset($js_keys['keys'])) {

// Removing key if it's to old
if (time() - (int)$t > $js_keys['js_keys_amount'] * 86400) {
unset($keys[$k]);
continue;
}
$keys = $js_keys['keys'];
$keys_checksum = md5(json_encode($keys));

if ($keys && is_array($keys) && !empty($keys))
{
foreach ($keys as $k => $t) {

// Removing key if it's to old
if (time() - (int)$t > $js_keys['js_keys_amount'] * 86400) {
unset($keys[$k]);
continue;
}

if ($t > $latest_key_time) {
$latest_key_time = $t;
$key = $k;
if ($t > $latest_key_time) {
$latest_key_time = $t;
$key = $k;
}
}
// Get new key if the latest key is too old
if (time() - (int)$latest_key_time > $js_keys['js_key_lifetime']) {
$keys[$key] = time();
}
}
// Get new key if the latest key is too old
if (time() - (int)$latest_key_time > $js_keys['js_key_lifetime']) {
$keys[$key] = time();
}
else $keys = array($key => time());

if (md5(json_encode($keys)) != $keys_checksum) {
$js_keys = array(
'keys' => $keys, // Keys to do JavaScript antispam test
'js_keys_amount' => 24, // JavaScript keys store days - 8 days now
'js_key_lifetime' => 86400, // JavaScript key life time in seconds - 1 day now
);
updateSettings(array('cleantalk_js_keys' => json_encode($js_keys)), false);
}
}
else $keys = array($key => time());

if (md5(json_encode($keys)) != $keys_checksum) {
$js_keys = array(
'keys' => $keys, // Keys to do JavaScript antispam test
'js_keys_amount' => 24, // JavaScript keys store days - 8 days now
'js_key_lifetime' => 86400, // JavaScript key life time in seconds - 1 day now
);
updateSettings(array('cleantalk_js_keys' => json_encode($js_keys)), false);
}


return $key;
}

Expand Down

0 comments on commit d667cc8

Please sign in to comment.