示例#1
0
 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;
 }
示例#2
0
 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;
 }
示例#3
0
 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;
 }
示例#5
0
 function getLastScanDate()
 {
     return JD_Vars_Helper::getVar('last_scan_date', 'jdefender');
 }
示例#6
0
 /**
  * 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;
 }