array( 'name' => 'IP Address', 'required' => true ), 'update' => array( 'name' => 'Update last seen', 'type' => 'checkbox', 'title' => 'Update timestamp every time "last seen" changes' ) ) ); private $name; private $uri; public function detectParameters($url) { $params = array(); $regex = '/^(https?:\/\/)?iknowwhatyoudownload\.com\/'; $regex .= '(?:en|ru)\/peer\/\?ip=(\d+\.\d+\.\d+\.\d+)/'; if(preg_match($regex, $url, $matches) > 0) { $params['ip'] = urldecode($matches[2]); return $params; } $regex = '/^(https?:\/\/)?iknowwhatyoudownload\.com\/'; $regex .= '(?:(?:en|ru)\/peer\/)?/'; if(preg_match($regex, $url, $matches) > 0) { $params['ip'] = $_SERVER['REMOTE_ADDR']; return $params; } return null; } public function getName() { if($this->name) { return $this->name; } else { return self::NAME; } } public function getURI() { if($this->uri) { return $this->uri; } else { return self::URI; } } public function collectData() { $ip = $this->getInput('ip'); $root = self::URI . 'en/peer/?ip=' . $ip; $html = getSimpleHTMLDOM($root) or returnServerError('Could not request ' . self::URI); $this->name = 'IKWYD: ' . $ip; $this->uri = $root; foreach($html->find('.table > tbody > tr') as $download) { $download = defaultLinkTo($download, self::URI); $firstSeen = $download->find('.date-column', 0)->innertext; $lastSeen = $download->find('.date-column', 1)->innertext; $category = $download->find('.category-column', 0)->innertext; $torlink = $download->find('.name-column > div > a', 0); $tortitle = strip_tags($torlink); $size = $download->find('td', 4)->innertext; $title = $tortitle; $author = $ip; if($this->getInput('update')) { $timestamp = strtotime($lastSeen); } else { $timestamp = strtotime($firstSeen); } $uri = $torlink->href; $content = 'IP address: '; $content .= $ip . '
'; $content .= 'First seen: ' . $firstSeen . '
'; $content .= ($this->getInput('update') ? 'Last seen: ' . $lastSeen . '
' : ''); $content .= ($category ? 'Category: ' . $category . '
' : ''); $content .= 'Title: ' . $torlink . '
'; $content .= 'Size: ' . $size; $item = array(); $item['uri'] = $uri; $item['title'] = $title; $item['author'] = $author; $item['timestamp'] = $timestamp; $item['content'] = $content; if($category) { $item['categories'] = array($category); } $this->items[] = $item; } } }