function getSpammer($ip) { require_once JPATH_ROOT . DS . 'administrator' . DS . 'components' . DS . 'com_jdefender' . DS . 'helpers' . DS . 'vars.php'; $long = ip2long(trim($ip)); if ($long == -1 || $long === false) { return false; } // Get Plugin info $params =& JD_Spam_Helper::getParams(); // get API key $key = $params->get('spam_key'); // without key this plugins has no use. if (empty($key)) { return false; } $response = JD_Vars_Helper::getVar($ip, 'spam_cache'); if (!$response) { // Query $ip = implode('.', array_reverse(explode('.', $ip))); $query = $key . '.' . $ip . '.dnsbl.httpbl.org'; $response = gethostbyname($query); // Did the lookup fail, if so either not listed or error if ($query == $response) { // rewrite responce so key isn't written to cache file and save precious space. $response = '0.0.0.0'; } // store data JD_Vars_Helper::setVar($ip, 'spam_cache', $response); } // explode responce $response = explode('.', $response); // If the response is positive, if ($response[0] == 127) { // Get thresholds $age = $params->get('spam_age', 30); $threat = $params->get('spam_threat', 25); $whoToBlock = $params->get('spam_seek', array()); settype($whoToBlock, 'array'); // Who to block $seek_s = array_search(1, $whoToBlock) !== false ? 1 : 0; $seek_h = array_search(2, $whoToBlock) !== false ? 2 : 0; $seek_c = array_search(4, $whoToBlock) !== false ? 4 : 0; $seek = $seek_s | $seek_h | $seek_c; if ($response[1] < $age && $response[2] > $threat && $response[3] & $seek > 0) { $spammer = new stdClass(); $spammer->suspicious = $response[3] & 1; $spammer->harvester = $response[3] & 2; $spammer->comment_spammer = $response[3] & 4; $spammer->age = $response[1]; $spammer->threat = $response[2]; $spammer->attacker = $response[3]; return $spammer; } } return false; }
function setVar($name, $type, $value) { $oldValue = JD_Vars_Helper::getVar($name, $type); if ($oldValue === $value) { return $oldValue; } $db =& JFactory::getDBO(); if (!is_null($oldValue)) { $db->setQuery('DELETE FROM #__jdefender_vars WHERE name = ' . $db->Quote($name) . ' AND `type` = ' . $db->Quote($type)); $db->query(); } $db->setQuery('INSERT INTO #__jdefender_vars (`name`, `type`, `value`) VALUES (' . $db->Quote($name) . ', ' . $db->Quote($type) . ', ' . $db->Quote(@serialize($value)) . ')'); $db->query(); $vars =& JD_Vars_Helper::_getVars(); $vars[$type][$name] = $value; return $oldValue; }
function formatDate($date) { $d =& JFactory::getDate($date); return $d->toFormat(JD_Vars_Helper::getVar('other_date_format', 'configuration', '%A, %d %B %Y')); }
/** * Scans the filesystem * @param $baseDir the base directory * (non-PHPdoc) * @see administrator/components/com_jdefender/lib/scanners/JD_Scanner#scan() */ function scan($baseDir = JPATH_ROOT, $useFile = true) { $session =& JFactory::getSession(); $filelist = $useFile ? $session->get('fileList', false, 'jdefender') : false; $filepos = (int) $session->get('fileListPosition', 0, 'jdefender'); $isEof = false; $files = false; $dirs = false; if ($filelist && is_file($filelist)) { $files = array(); $dirs = array(); $h = @fopen($filelist, 'r'); if ($h) { if ($filepos) { fseek($h, $filepos); } for ($i = 0, $c = 50 + mt_rand(0, 15); $i < $c && !feof($h); $i++) { $line = @fgets($h); if ($line) { $line = trim($line); if (is_file($line)) { $files[] = $line; } elseif (is_dir($line)) { $dirs[] = $line; } } } } $pos = @ftell($h); $isEof = feof($h); $session->set('fileListPosition', $pos, 'jdefender'); @fclose($h); } // var_dump($filelist, $pos, $isEof);die; // Restore variables from old session. $this->_filesScanned = JD_Vars_Helper::getVar('files', 'jdefender_scan'); $this->_foldersScanned = JD_Vars_Helper::getVar('dirs', 'jdefender_scan'); $this->scanFilesAndDirs($baseDir, $files, $dirs); $return = array(); $result = $this->trigger('onGetData'); for ($i = 0, $c = count($result); $i < $c; $i++) { // index by validator name $return[$result[$i][0]] =& $result[$i]; } if ($isEof) { $return['EOF'] = true; } return $return; }
function getLastScanDate() { return JD_Vars_Helper::getVar('last_scan_date', 'jdefender'); }
/** * Flushes the log buffer. * @return boolean */ function flushLogs() { if (!count($this->_logData)) { return true; } $session =& JFactory::getSession(); $doLog = $session->get('doLog', false, 'jdefender'); $db =& JFactory::getDBO(); $keys = array('id', 'ip', 'ctime', 'type', 'user_id', 'url', 'post', 'cook', 'referer', 'status', 'issue', 'extension'); $q = 'INSERT INTO #__jdefender_log ' . '(`id`, `ip`, `ctime`, `type`, `user_id`, `url`, `post`, `cook`, `referer`, `status`, `issue`, `extension`) '; $count = array(); $values = array(); foreach ($this->_logData as $entry) { if ($doLog) { if (empty($count[$entry->type])) { $count[$entry->type] = 0; } $count[$entry->type]++; } $row = array(); foreach ($keys as $key) { if (empty($entry->{$key})) { if ($key == 'ctime') { $row[] = 'NOW()'; } else { $row[] = '""'; } } else { $row[] = $db->Quote($entry->{$key}); } } $values[] = '( ' . implode(', ', $row) . ' )'; } $q = $q . ' VALUES ' . implode(', ', $values); $db->setQuery($q); if (!$db->query()) { $this->setError(JText::_('Cannot write log')); return false; } if ($doLog && count($count)) { foreach ($count as $type => $c) { $new = (int) JD_Vars_Helper::getVar($type, 'jdefender_scan', 0) + $c; JD_Vars_Helper::setVar($type, 'jdefender_scan', $new); } } // Empty the buffer $this->_logData = null; return true; }