Связаться со мной можно, черканув пару строк на mail@mindcollapse.com или же в skype: orl-light
А теперь, давайте по сути. Мне очень нравятся подобная идея - нарушение авторских прав без ожидания и очень печалит факт отсутствия нормальной реализации. Нет, конечно моя версия работает и с поставленной задачей справляется, но хотелось бы чего-то большего, интуитивно-удобного и приятного, а у меня для для такого не хватает ни знаний, ни времени, ни мотивации - работает же и сейчас, зачем мне что-то большое? Так вот, я отдам все исходники по запросу на email или в скайп, указанный в заголовке этого блога. Вы сможете делать с ними все, что душа пожелает - продавайте, воруйте, убивайте, делайте стартап, но я всегда должен буду иметь доступ к исходникам, природное любопытство и все дела. Написано все на C#, код конечно не ахти какой, но я постараюсь все приаккуратить к передаче, чтобы стыдно не было моим стареньким учителям информатики, которых у меня конечно же не было. В качестве проверки, что вы не какой-то хер с горы, вам нужно будет показать технику гроула рассказать, как можно рассчитать необходимый процент буферизации, имея скорость загрузки за последние 10 секунд, вес файла и его аудио-видео битрейт и как определить, что проигрывание идет быстрее скачивания файла с помощью стандартного mplayer вывода. А вообще, шучу конечно. Без проблем вышлю и так + модифицированную библиотеку MonoTorrent в довесок. Спасибопожалуйста.
Возвращаемся к теме реализации. Прежде всего, отвечаю на вопрос: зачем мне нужно много неймсерверов, а не один центральный без всех этих заморочек с MySQL и т.д. В качестве master мы будем использовать Google Public DNS, на нем был замечен load balancing для некоторых крупных сайтов, на запрос по тому же ютубу с разных географических точек отдавались разные A-записи. К тому же, проводить NS query с гонконгского сервера через туннель на центральный сервер где-то в Люксембурге или США - очень медленно, поэтому наши DNS-ы будут отвечать по тому же адресу, что и шлюз. Языком реализации стал Perl. Почему? Да просто в нем есть все необходимые нам компоненты. Использовать мы будем Net::DNS для резолвера и Net::DNS::Nameserver для сервера. Разумеется, без кеширования никуда. В качестве решения я советую смотреть в сторону Cache::Bounded, которое является по сути оберткой вокруг Cache::MemoryCache с оптимизацией и обнулением кеша по достижению определенного размера, что спасет нас от переполнения памяти. В результате получилось что-то вроде такого кода. Сразу замечу, что 3 цикла for при чтении ответа из кеша - необъяснимая мною мистика. Казалось бы с помощью тех же элементов исходного массива путем перебора формируем новый, а вот простое присваивание - не работает. И хоть ты тресни. По скорости вполне нормально, первый запрос конечно отнимает определенное время, но в дальнейшем из кеша в памяти все читается очень быстро. В качестве бонуса, держите список из 1800 самых крупных торрент трекеров для блокировки.
Как по мне, сервисы vpn туннелей должны служить исключительно 2м целям: скачивание торрентов в странах, где за это находят и бьют по рукам; и просмотр католическими священниками детской порнографии там, где это тоже не особо приветствуется. Первых случаев становится все больше, а последних - все меньше. Мы же нашим TOS-ом запрещаем основные приоритетные направления. А все остальные истории с защитой вашей информации, все это сказки для детей. Мы то с вами знаем, что от паяльника еще ни один фаерволл или канал с шифрованием не спасал.

Кому лень читать дальше - большая ссылка скачать (с автообновлением и плюшками)
А для остальных, продолжим. Как всегда, сперва техническая часть. Написано приложение на С# и WinForms в Visual C# 2010 Express под .NET 3,5. Почему не WPF? Все очень просто, WPF контролсы не имеют своего собственного window handle, что было необходимо для встраивания mplayer-а в окно формы. Перепробывал сотни варинантов, но максимум что удалось получать, это handle окна, а нужен был hwnd панели или текстлейбла. Ну, вообщем, такая канитель. В качестве Torrent библиотеки был выбран велосипед MonoTorrent, который просто божественный. Поддержка на форуме и уровень возможностей позволяет писать все: начиная обычным парсером торрент файлов и заканчивая собственным трекером. Едиственная проблема, это практически полное отсутствие документации. Приходится копаться в исходниках, благо они отлично комментированны. Плеером был выбран MPlayer по следующим причинам: возможность встраивания без activex и прочих финтов ушами, как у VLC например, небольшой размер и встроенные декодеры, возможность проигрывания недокачанных файлов.Парочка ответов на парочку вопросов. Все это будет бесплатно? Разумеется и даже opensource. Вот только второе будет чуть позднее, в настоящее время код ужасен, некоментирован и захламлен мусором. После парочки рефакторингов открою для анонимного доступа svn проекта. Почему Torrero, что это значит? Значит это производное от слова torero, матадор. Почему? Ну не знаю, хотелось присутствия в названии чего-то похожего на Torrent. Изначальная версия "torrantino", полученная объединением Torrent + Tarantion оказалась уже забита. Будет ли дальше развиваться проект, а что что-то все виснет и лагает? Да, разумеется, планов море. Это и переделать интерфейс, и сделать поддержку проигрывания нескольких файлов в торренте, и еще куча всего, вот только времени у меня в обрез, но в скорости появится отдельная страница, где можно будет смотреть change-лог, планы развития и узнавать об обновлениях.
Если вы нашли ошибку или хотите получить исходники немедленно, пишите мне в твиттер @middlesizetit либо же на почту mail@smirnoff.sumy.ua. Обязательно отвечу всем желающим.