diff --git a/bridges/IKWYDBridge.php b/bridges/IKWYDBridge.php
new file mode 100644
index 00000000000..b24ac75cc4b
--- /dev/null
+++ b/bridges/IKWYDBridge.php
@@ -0,0 +1,114 @@
+ 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;
+ }
+ }
+}