[ 'name' => 'IP Address', 'exampleValue' => '8.8.8.8', 'required' => true ], 'update' => [ 'name' => 'Update last seen', 'type' => 'checkbox', 'title' => 'Update timestamp every time "last seen" changes' ] ] ]; private $name; private $uri; public function detectParameters($url) { $params = []; $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); $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 = []; $item['uri'] = $uri; $item['title'] = $title; $item['author'] = $author; $item['timestamp'] = $timestamp; $item['content'] = $content; if ($category) { $item['categories'] = [$category]; } $this->items[] = $item; } } }