<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>BEERHEAD &#187; Красноглазие</title>
	<atom:link href="http://www.beerhead.ru/blog/category/red-eyes/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.beerhead.ru/blog</link>
	<description>~mediterranean~</description>
	<lastBuildDate>Mon, 23 Jan 2012 09:47:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>VLC Player: Удаленное управление с помощью связки PHP и Telnet. Настройка Video-on-Demand.</title>
		<link>http://www.beerhead.ru/blog/2011/01/16/vlc-player-remote-admin-via-php-and-telnet-video-on-demand/</link>
		<comments>http://www.beerhead.ru/blog/2011/01/16/vlc-player-remote-admin-via-php-and-telnet-video-on-demand/#comments</comments>
		<pubDate>Sun, 16 Jan 2011 10:20:47 +0000</pubDate>
		<dc:creator>antipod</dc:creator>
				<category><![CDATA[Красноглазие]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[файл-сервер]]></category>

		<guid isPermaLink="false">http://www.beerhead.ru/blog/?p=1831</guid>
		<description><![CDATA[Сто лет назад я писал небольшой цикл по настройке файлопомойки под Linux&#8217;ом, тогда же обмолвился о том, что хочу прикрутить внутри сети потоковое видео. Потом как-то идея сошла на нет и заглохла, а вот сейчас вновь стала актуальной, в связи с чем погрузился в дебри изучения проблемы. Сразу отмечу, что в качестве streaming server был [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://www.maclife.com/files/u124583/vlc-logo.jpg" alt="" width="303" height="303" />Сто лет назад я писал небольшой цикл по настройке файлопомойки под Linux&#8217;ом, тогда же обмолвился о том, что хочу прикрутить внутри сети потоковое видео. Потом как-то идея сошла на нет и заглохла, а вот сейчас вновь стала актуальной, в связи с чем погрузился в дебри изучения проблемы.</p>
<p>Сразу отмечу, что в качестве streaming server был выбран великий и ужасный VLC, который от релиза к релизу обрастает функциональностью и регулярно апдейтится. Я допускаю, что есть более интересные варианты или даже готовые out-of-the-box решения, но легких путей мы как обычно не ищем.</p>
<p>Схема работы всей связки VOD должна выглядеть примерно следующим образом:<br />
&gt; есть fronend &#8211; обычная веб-страница с индексом всех фильмов, которые доступны на файлопомойке;<br />
&gt; VLC настроен на управление по интерфейсу telnet и вещание по протоколу RTSP;<br />
&gt; при клике по названию ссылки front-end коннектится к VLC по telnet<br />
&gt; и посылает последовательность команд для создания нового VOD (Video-on-Demand) контейнера;<br />
&gt; после чего можно подсовывать RTSP линк плееру на другом конце и смотреть видео.</p>
<p>Прелесть VLC &#8211; в кроссплатформенности, поэтому решение будет работоспособно как под Windows, так и под Linux <img src='http://www.beerhead.ru/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
<span id="more-1831"></span></p>
<p><strong><em>Запуск VLC с telnet интерфейсом</em></strong></p>
<p><em>vlc -vvv &#8211;color &#8211;ttl 2 -I telnet &#8211;telnet-port port &#8211;telnet-password password &#8211;telnet-host host_ip &#8211;rtsp-host 0.0.0.0:rtsp_port</em></p>
<p><em>&#8211;color </em>подстветка уведомлений, ошибок и прочей полезной для дебага информации в терминале;<br />
<em>-I telnet</em> собственно запуск telnet интерфейса;<br />
<em>&#8211;telnet-port port</em> порт, на котором слушаются telnet подключения;<br />
<em>&#8211;telnet-password password</em> пароль к telnet&#8217;у;<br />
<em>&#8211;telnet-host host_ip</em> адрес интерфейса, на котором слушаются telnet подключения;<br />
<em>&#8211;rtsp-host host_ip:rtsp_port</em> адрес интерфейса для RTSP трафика и порт;</p>
<p><em>&#8211;rtp-client-port=port_number</em> вот эта опция позволяет в явном виде указать по какому порту пойдет трафик между клиентом и сервером, и соответственно решит проблему с фаерволами.</p>
<p>А вот замечательное чтиво про RTSP: <a href="http://soundscreen.com/streaming/firewall.html">http://soundscreen.com/streaming/firewall.html</a> Для  корректной работы протокола нужно довольно много открытых портов, что может стать проблемой при работе с NAT и фаерволами.</p>
<p><strong><em>Создание VOD-контейнера в VLC</em></strong></p>
<p>Создать VOD-контейнер в VLC не сложно. После подключения к VLC по telnet, достаточно выполнить следующую последовательность команд:<br />
<em>new title vod</em> #title – название VOD контейнера, к нему мы будем обращаться клиентом<br />
<em>setup title input «media_path»</em> #полный путь к файлу с видео<br />
<em>setup title mux mp2p</em> #трафик инкапсулируется в MPEG Program Stream (PS)<br />
<em>setup title enabled</em> #делаем VOD контейнер fактивным, теперь к нему можно подключаться по следующей сслыке rtsp://vlc_vod_server_address:rtsp_port/title<br />
<strong><em>Вообще для передачи MPEG трафика по сети должен использоваться MPEG Transport Stream (TS) &#8211; опция mux mp2t, но по непонятной причине он отказался работать, а вот PS &#8211; нет.</em></strong></p>
<p><strong>Frontend для управления VLC  через Telnet</strong></p>
<p><strong> </strong><span style="font-style: normal;">Для управления VLC через Telnet я написал маленький фронтэнд на PHP, использующий для подключения pfsockopen(). </span></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;!--</span>?php
<span style="color: #666666; font-style: italic;">/*
VLC Over Telnet
*/</span>
&nbsp;
	<span style="color: #000088;">$char</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;<span style="color: #660099; font-weight: bold;">\xA</span>&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$telnet_header</span><span style="color: #339933;">=</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFF</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFB</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x1F</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFF</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFB</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x20</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFF</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFB</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x18</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFF</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>_
<span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFB</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x27</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFF</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFD</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x01</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFF</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFB</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x03</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFF</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFD</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x03</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFF</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>_
<span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFC</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x23</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFF</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFC</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x24</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFF</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFA</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x1F</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x00</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x50</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x00</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x18</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>_
<span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFF</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xF0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFF</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFA</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x20</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x00</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x33</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x38</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x34</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x30</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x30</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x2C</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>_
<span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x33</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x38</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x34</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x30</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x30</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFF</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xF0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFF</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFA</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x27</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x00</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFF</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>_
<span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xF0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFF</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFA</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x18</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x00</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x58</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x54</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x45</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x52</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x4D</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFF</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xF0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//call this to esteblish telnet connection to host on a specified port</span>
	<span style="color: #000000; font-weight: bold;">function</span> Connect<span style="color: #009900;">&#40;</span><span style="color: #000088;">$server</span><span style="color: #339933;">,</span><span style="color: #000088;">$port</span><span style="color: #339933;">,</span><span style="color: #000088;">$pass</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$fp</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$telnet_header</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$fp</span><span style="color: #339933;">=</span><span style="color: #990000;">pfsockopen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$server</span><span style="color: #339933;">,</span><span style="color: #000088;">$port</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">fputs</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span><span style="color: #000088;">$telnet_header</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">sleep</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">fputs</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span><span style="color: #000088;">$pass</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #660099; font-weight: bold;">\xA</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">return</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//if you need a complete telnet output, even after logout</span>
	<span style="color: #666666; font-style: italic;">//use this function after Disconnect function abd use fclose($fp) after</span>
	<span style="color: #000000; font-weight: bold;">function</span> GetResponce<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$fp</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$output</span><span style="color: #339933;">=</span><span style="color: #990000;">fread</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$stat</span><span style="color: #339933;">=</span><span style="color: #990000;">socket_get_status</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$output</span><span style="color: #339933;">.=</span><span style="color: #990000;">fread</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span> <span style="color: #000088;">$stat</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;unread_bytes&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
		<span style="color: #000088;">$output</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$output</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$output</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'0'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$output</span> <span style="color: #339933;">=</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$output</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
		<span style="color: #000088;">$output</span> <span style="color: #339933;">=</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;
&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$output</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$output</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//call this to properly log out from vlc telnet and close session</span>
	<span style="color: #000000; font-weight: bold;">function</span> Disconnect<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$fp</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">fputs</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;quit<span style="color: #660099; font-weight: bold;">\xA</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">sleep</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">fclose</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$fp</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">return</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//call this to add a new vod container and setup it</span>
	<span style="color: #000000; font-weight: bold;">function</span> AddMovie<span style="color: #009900;">&#40;</span><span style="color: #000088;">$vodname</span><span style="color: #339933;">,</span><span style="color: #000088;">$filepath</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$fp</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">fputs</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;new &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$vodname</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; vod<span style="color: #660099; font-weight: bold;">\xA</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">fputs</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;setup &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$vodname</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; input '&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$filepath</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;'<span style="color: #660099; font-weight: bold;">\xA</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">fputs</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;setup &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$vodname</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; mux mp2p<span style="color: #660099; font-weight: bold;">\xA</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">fputs</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;setup &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$vodname</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; enabled<span style="color: #660099; font-weight: bold;">\xA</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">sleep</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">return</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">function</span> DeleteMovie<span style="color: #009900;">&#40;</span><span style="color: #000088;">$vodname</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$fp</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">fputs</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;del &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$vodname</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #660099; font-weight: bold;">\xA</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">sleep</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">return</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">function</span> ShowVODs<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$fp</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">fputs</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;show<span style="color: #660099; font-weight: bold;">\xA</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">sleep</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">return</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
?<span style="color: #339933;">--&gt;</span></pre></div></div>

<p>Собственно код предельно прост и, полагаю, в особых комментариях не нуждается. Для соединения с VLC сначала вызывается функция Connect(), которой передаются адрес сервера, порт подключения и пароль, после чего ему можно передать необходимую последовательность команд. В моем случае, за это отвечает функция AddMovie(), которой в качестве аргументов передается название контейнера и путь к видеофайлу.<br />
Каждая последовательность команд, переданных на сервер, должна завершаться управляющим символом перевода строки, то есть &#8216;\xA&#8217; (по ссылке можно ознакомиться с другими управляющими символами: <a href="http://www.cs.tut.fi/~jkorpela/chars/c0.html">http://www.cs.tut.fi/~jkorpela/chars/c0.html</a>).<br />
Таким же образом, после вызова Connect(), можно вызвать DeleteMovie(), команде передается название VOD-контейнера.<br />
В целях отладки, была еще написана функция GetResponse(), которая возвращает содержимое telnet сессии.<br />
Последовательность функций, для взаимодействия с VLC завершается функцией Disconnect(), которая посылает VLC команду закрытия telnet сессии, а потом убивает сокет.</p>
<p>Ссылка, которая содержит параметры нового VOD-контейнера имеет следующий вид:<br />
<em>http://server_address/?add=createvod&amp;vodname=name_of_the_vod_container&amp;filepath=&#8217;absolute_path_to_video_path&#8217;</em><br />
А следующий код обрабатывает указанный линк, забирает из него необходимые переменные и вызывает функции. Аналогичный код отвечает за удаление VOD-контейнеров с сервера. Разница только в том, что в качестве параметра, забирается только название VOD-контейнера.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'add'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;createvod&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$vodname</span><span style="color: #339933;">=</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'vodname'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$filepath</span><span style="color: #339933;">=</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'filepath'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'run'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">NULL</span><span style="color: #339933;">;</span>
		Connect<span style="color: #009900;">&#40;</span><span style="color: #000088;">$server</span><span style="color: #339933;">,</span><span style="color: #000088;">$port</span><span style="color: #339933;">,</span><span style="color: #000088;">$pass</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		AddMovie<span style="color: #009900;">&#40;</span><span style="color: #000088;">$vodname</span><span style="color: #339933;">,</span><span style="color: #000088;">$filepath</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">echo</span> GetResponce<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;hr /&gt;&quot;</span><span style="color: #339933;">;</span>
		Disconnect<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Полезные ссылки по теме:<br />
<a href="http://www.videolan.org/doc/streaming-howto/en/">Streaming How-To</a><br />
<a href="http://www.videolan.org/doc/streaming-howto/en/ch03.html">Advanced streaming using the command line</a><br />
<a href="https://www.ibm.com/developerworks/ru/edu/vlc/section4.html">Руководство пользователя VLC. Интерфейс командной строки</a></p>
<p><strong>И плюс в качестве дополнения несколько инструментов, на которые я наткнулся в процессе работы над frontend:</strong><br />
&gt; <em>KpyM Telnet / SSH server</em> <a href="http://www.kpym.com/2/kpym/index.htm">http://www.kpym.com/2/kpym/index.htm</a><br />
К сожалению в логах VLC telnet-сессия подробно не протоколируется, в лог идет только информация об открытии сокета, поэтому для отладки скрипта использовал этот сервер. Ну и плюс можно рулить Windows через консольку <img src='http://www.beerhead.ru/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /><br />
&gt; <em>Dokan SSHFS</em> <a href="http://dokan-dev.net/en/">http://dokan-dev.net/en/</a><br />
Утилита позволяет подмонтировать файловую систему *nix в качестве виртуального жесткого диска Windows с помощью SFTP. Обычно для переброса инфы на *nix машины я использую <a href="http://winscp.net/eng/index.php">WinSCP</a>, но вот понадобилось подмонтировать папку, а такого функционала не оказалось, так что использовал этот костыль. Во всех *nix системах это реализовано нативно и грамотно с помощью <em>sshfs</em>.</p>
<p><a class="a2a_button_livejournal" href="http://www.addtoany.com/add_to/livejournal?linkurl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2011%2F01%2F16%2Fvlc-player-remote-admin-via-php-and-telnet-video-on-demand%2F&amp;linkname=VLC%20Player%3A%20%D0%A3%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5%20%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20%D1%81%D0%B2%D1%8F%D0%B7%D0%BA%D0%B8%20PHP%20%D0%B8%20Telnet.%20%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0%20Video-on-Demand." title="LiveJournal" rel="nofollow" target="_blank"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/icons/livejournal.png" width="16" height="16" alt="LiveJournal"/></a><a class="a2a_button_vk" href="http://www.addtoany.com/add_to/vk?linkurl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2011%2F01%2F16%2Fvlc-player-remote-admin-via-php-and-telnet-video-on-demand%2F&amp;linkname=VLC%20Player%3A%20%D0%A3%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5%20%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20%D1%81%D0%B2%D1%8F%D0%B7%D0%BA%D0%B8%20PHP%20%D0%B8%20Telnet.%20%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0%20Video-on-Demand." title="Vkontakte" rel="nofollow" target="_blank"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/icons/vk.png" width="16" height="16" alt="Vkontakte"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2011%2F01%2F16%2Fvlc-player-remote-admin-via-php-and-telnet-video-on-demand%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2011%2F01%2F16%2Fvlc-player-remote-admin-via-php-and-telnet-video-on-demand%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2011%2F01%2F16%2Fvlc-player-remote-admin-via-php-and-telnet-video-on-demand%2F&amp;counturl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2011%2F01%2F16%2Fvlc-player-remote-admin-via-php-and-telnet-video-on-demand%2F&amp;count=horizontal&amp;text=VLC%20Player%3A%20%D0%A3%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5%20%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20%D1%81%D0%B2%D1%8F%D0%B7%D0%BA%D0%B8%20PHP%20%D0%B8%20Telnet.%20%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0%20Video-on-Demand." scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2011%2F01%2F16%2Fvlc-player-remote-admin-via-php-and-telnet-video-on-demand%2F&amp;counturl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2011%2F01%2F16%2Fvlc-player-remote-admin-via-php-and-telnet-video-on-demand%2F&amp;count=horizontal&amp;text=VLC%20Player%3A%20%D0%A3%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5%20%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20%D1%81%D0%B2%D1%8F%D0%B7%D0%BA%D0%B8%20PHP%20%D0%B8%20Telnet.%20%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0%20Video-on-Demand." scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2011%2F01%2F16%2Fvlc-player-remote-admin-via-php-and-telnet-video-on-demand%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2011%2F01%2F16%2Fvlc-player-remote-admin-via-php-and-telnet-video-on-demand%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><!--<![endif]--><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2011%2F01%2F16%2Fvlc-player-remote-admin-via-php-and-telnet-video-on-demand%2F&amp;title=VLC%20Player%3A%20%D0%A3%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5%20%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20%D1%81%D0%B2%D1%8F%D0%B7%D0%BA%D0%B8%20PHP%20%D0%B8%20Telnet.%20%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0%20Video-on-Demand." id="wpa2a_2"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.beerhead.ru/blog/2011/01/16/vlc-player-remote-admin-via-php-and-telnet-video-on-demand/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Хостинг DNS</title>
		<link>http://www.beerhead.ru/blog/2010/06/30/dns-hosting/</link>
		<comments>http://www.beerhead.ru/blog/2010/06/30/dns-hosting/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 07:47:02 +0000</pubDate>
		<dc:creator>antipod</dc:creator>
				<category><![CDATA[Красноглазие]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[администрирование]]></category>
		<category><![CDATA[домены]]></category>

		<guid isPermaLink="false">http://www.beerhead.ru/blog/?p=1365</guid>
		<description><![CDATA[С давних пор, а точнее с момента появления этого блога, все мои DNS записи хостились на серверах EveryDNS. Потом сервис внезапно купила, кажется, DynDNS, и началась нездоровая чехарда. В частности, появились какие-то нездоровые ограничения для изменения DNS записей доменов в зоне .ru Тогда и было принято решение, что надо плавно мигрировать с EveryDNS куда-нибудь, где [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="YpDNS" src="http://www.ypdns.com/ypdns_logo_big.jpg" alt="" width="310" height="45" />С давних пор, а точнее с момента появления этого блога, все мои DNS записи хостились на серверах EveryDNS. Потом сервис внезапно купила, кажется, DynDNS, и началась нездоровая чехарда. В частности, появились какие-то нездоровые ограничения для изменения DNS записей доменов в зоне .ru</p>
<p>Тогда и было принято решение, что надо плавно мигрировать с EveryDNS куда-нибудь, где поспокойнее. Товарищ посоветовал <a href="http://FreeDNS.ws" target="_blank">FreeDNS.ws</a>. Приятный сервис, адекватная админка, но в какой-то момент нейм-сервера этой конторы стали лежать сутками. За последние 4 дня ДНСы были недоступны, пожалуй, 3 суток. Что естественно неприемлимо. Пару дней назад оттуда пришло письмо, дескать их злостно ддосят. Но это их личная проблема. Снова назрел вопрос перезда&#8230;</p>
<p>А тут случайно на Хабре появился <a href="http://habrahabr.ru/blogs/i_am_advertising/97715/" target="_blank">анонс сервиса</a> Your Personal DNS (<a href="http://www.ypdns.com/" target="_blank">YpDNS.com</a>). Большой плюс сервиса &#8211; поддержка пяти нейм-серверов в разных частях света (Россия, США, Израиль, Малайзия, Англия); в наличии имеется удобная админка и прочие вкусности.</p>
<p>Сегодня утром переехал на их сервера, посмотрим как у них в плане стабильности.</p>
<p><a class="a2a_button_livejournal" href="http://www.addtoany.com/add_to/livejournal?linkurl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F06%2F30%2Fdns-hosting%2F&amp;linkname=%D0%A5%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B3%20DNS" title="LiveJournal" rel="nofollow" target="_blank"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/icons/livejournal.png" width="16" height="16" alt="LiveJournal"/></a><a class="a2a_button_vk" href="http://www.addtoany.com/add_to/vk?linkurl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F06%2F30%2Fdns-hosting%2F&amp;linkname=%D0%A5%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B3%20DNS" title="Vkontakte" rel="nofollow" target="_blank"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/icons/vk.png" width="16" height="16" alt="Vkontakte"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F06%2F30%2Fdns-hosting%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F06%2F30%2Fdns-hosting%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F06%2F30%2Fdns-hosting%2F&amp;counturl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F06%2F30%2Fdns-hosting%2F&amp;count=horizontal&amp;text=%D0%A5%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B3%20DNS" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F06%2F30%2Fdns-hosting%2F&amp;counturl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F06%2F30%2Fdns-hosting%2F&amp;count=horizontal&amp;text=%D0%A5%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B3%20DNS" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F06%2F30%2Fdns-hosting%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F06%2F30%2Fdns-hosting%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><!--<![endif]--><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F06%2F30%2Fdns-hosting%2F&amp;title=%D0%A5%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B3%20DNS" id="wpa2a_4"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.beerhead.ru/blog/2010/06/30/dns-hosting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Бэкап WordPress</title>
		<link>http://www.beerhead.ru/blog/2010/04/01/wordpress-backup/</link>
		<comments>http://www.beerhead.ru/blog/2010/04/01/wordpress-backup/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 20:23:46 +0000</pubDate>
		<dc:creator>antipod</dc:creator>
				<category><![CDATA[Красноглазие]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.beerhead.ru/blog/?p=1118</guid>
		<description><![CDATA[Бэкап базы данных этого блога я делал регулярно с помощью WP-DB-Backup, однако с версией WordPress 2.9.2 он как-то не заработал, поэтому был выбран альтернативный вариант в виде WP-DB-Manager. Что касается бэкапа файлов, то его делал руками и эпизодически, что не есть хорошо. Сегодня решил проблему бэкапов кардинально. За основу был взят скрипт Гая Рутенберга и [...]]]></description>
			<content:encoded><![CDATA[<p>Бэкап базы данных этого блога я делал регулярно с помощью <strong>WP-DB-Backup</strong>, однако с версией WordPress 2.9.2 он как-то не заработал, поэтому был выбран альтернативный вариант в виде <strong>WP-DB-Manager</strong>.<br />
Что касается бэкапа файлов, то его делал руками и эпизодически, что не есть хорошо.<br />
Сегодня решил проблему бэкапов кардинально. За основу был взят скрипт Гая Рутенберга и немножко, ну совсем самую малость допилен <img src='http://www.beerhead.ru/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Для аплода бэкапов базы данных и файловой структуры автор использовал lftp, коего на сервере не оказалось, поэтому использовал обычный ftp.</p>
<p>Оригинальный скрипт лежит <a href="http://www.guyrutenberg.com/2010/02/28/improved-ftp-backup-for-wordpress/">тут</a>.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #666666; font-style: italic;"># Copyright 2008, 2010 Guy Rutenberg &lt;http://www.guyrutenberg.com/contact-me&gt;</span>
<span style="color: #666666; font-style: italic;"># Modified a little bit by Antipod.</span>
&nbsp;
<span style="color: #007800;">BLOG_DIR</span>=<span style="color: #000000; font-weight: bold;">/</span>path<span style="color: #000000; font-weight: bold;">/</span>to<span style="color: #000000; font-weight: bold;">/</span>blog<span style="color: #000000; font-weight: bold;">/</span>directory<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #007800;">BACKUP_DIR</span>=<span style="color: #000000; font-weight: bold;">/</span>path<span style="color: #000000; font-weight: bold;">/</span>to<span style="color: #000000; font-weight: bold;">/</span>backups<span style="color: #000000; font-weight: bold;">/</span>directory<span style="color: #000000; font-weight: bold;">/</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#fetching db settings from wp-config.php</span>
<span style="color: #007800;">DB_NAME</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;&lt;?php require_once(<span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #007800;">${BLOG_DIR}</span>/wp-config.php<span style="color: #000099; font-weight: bold;">\&quot;</span>); echo DB_NAME;&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> php<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #007800;">DB_USER</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;&lt;?php require_once(<span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #007800;">${BLOG_DIR}</span>/wp-config.php<span style="color: #000099; font-weight: bold;">\&quot;</span>); echo DB_USER;&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> php<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #007800;">DB_PASS</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;&lt;?php require_once(<span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #007800;">${BLOG_DIR}</span>/wp-config.php<span style="color: #000099; font-weight: bold;">\&quot;</span>); echo DB_PASSWORD;&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> php<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #007800;">DB_HOST</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;&lt;?php require_once(<span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #007800;">${BLOG_DIR}</span>/wp-config.php<span style="color: #000099; font-weight: bold;">\&quot;</span>); echo DB_HOST;&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> php<span style="color: #000000; font-weight: bold;">`</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#ftp server to save backups</span>
<span style="color: #007800;">FTP_HOST</span>=host
<span style="color: #007800;">FTP_USER</span>=username
<span style="color: #007800;">FTP_PASS</span>=password
<span style="color: #666666; font-style: italic;">#if u don't want to save backups in root catalog then u probably want to edit this line. </span>
<span style="color: #666666; font-style: italic;">#Note: path must be surrounded by '/'</span>
<span style="color: #007800;">FTP_BACKUP_DIR</span>=<span style="color: #000000; font-weight: bold;">/</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># end of configuration - you probably don't need to touch anything bellow</span>
<span style="color: #007800;">BLOG_DIR</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">dirname</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$BLOG_DIR</span>&quot;</span><span style="color: #000000; font-weight: bold;">`/`</span><span style="color: #c20cb9; font-weight: bold;">basename</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$BLOG_DIR</span>&quot;</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #007800;">BACKUP_DIR</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">dirname</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$BACKUP_DIR</span>&quot;</span><span style="color: #000000; font-weight: bold;">`/`</span><span style="color: #c20cb9; font-weight: bold;">basename</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$BACKUP_DIR</span>&quot;</span><span style="color: #000000; font-weight: bold;">`</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-n</span> <span style="color: #ff0000;">&quot;Dumping database... &quot;</span>
<span style="color: #007800;">DUMP_NAME</span>=<span style="color: #800000;">${DB_NAME}</span>-$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>Y<span style="color: #000000; font-weight: bold;">%</span>m<span style="color: #000000; font-weight: bold;">%</span>d<span style="color: #7a0874; font-weight: bold;">&#41;</span>.sql.bz2
mysqldump <span style="color: #660033;">--user</span>=<span style="color: #800000;">${DB_USER}</span> <span style="color: #660033;">--password</span>=<span style="color: #800000;">${DB_PASS}</span> <span style="color: #660033;">--host</span>=<span style="color: #800000;">${DB_HOST}</span> \
 <span style="color: #660033;">--databases</span> <span style="color: #800000;">${DB_NAME}</span> \
 <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">bzip2</span> <span style="color: #660033;">-c</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #800000;">${BACKUP_DIR}</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #800000;">${DUMP_NAME}</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$?&quot;</span> <span style="color: #660033;">-ne</span> <span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;failed!&quot;</span>
	<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;done&quot;</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-n</span> <span style="color: #ff0000;">&quot;Creating tarball... &quot;</span>
<span style="color: #007800;">TAR_NAME</span>=<span style="color: #800000;">${BLOG_DIR##*/}</span>-$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>Y<span style="color: #000000; font-weight: bold;">%</span>m<span style="color: #000000; font-weight: bold;">%</span>d<span style="color: #7a0874; font-weight: bold;">&#41;</span>.tar.bz2
<span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-cjf</span> <span style="color: #800000;">${BACKUP_DIR}</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #800000;">${BLOG_DIR##*/}</span>-$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>Y<span style="color: #000000; font-weight: bold;">%</span>m<span style="color: #000000; font-weight: bold;">%</span>d<span style="color: #7a0874; font-weight: bold;">&#41;</span>.tar.bz2 <span style="color: #800000;">${BLOG_DIR}</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$?&quot;</span> <span style="color: #660033;">-ne</span> <span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;failed!&quot;</span>
	<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">2</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;done&quot;</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-n</span> <span style="color: #ff0000;">&quot;Uploading SQL dump and tarball to FTP... &quot;</span>
<span style="color: #c20cb9; font-weight: bold;">ftp</span> <span style="color: #c20cb9; font-weight: bold;">ftp</span>:<span style="color: #000000; font-weight: bold;">//</span><span style="color: #800000;">${FTP_USER}</span>:<span style="color: #800000;">${FTP_PASS}</span><span style="color: #000000; font-weight: bold;">@</span><span style="color: #800000;">${FTP_HOST}</span><span style="color: #000000; font-weight: bold;">/</span> <span style="color: #cc0000; font-style: italic;">&lt;&lt;EOF
cd ${FTP_BACKUP_DIR}
put ${BACKUP_DIR}/${DUMP_NAME} /${DUMP_NAME}
put ${BACKUP_DIR}/${TAR_NAME} /${TAR_NAME}
&nbsp;
EOF</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$?&quot;</span> <span style="color: #660033;">-ne</span> <span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;failed!&quot;</span>
	<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">3</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;done&quot;</span></pre></td></tr></table></div>

<p><a class="a2a_button_livejournal" href="http://www.addtoany.com/add_to/livejournal?linkurl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F04%2F01%2Fwordpress-backup%2F&amp;linkname=%D0%91%D1%8D%D0%BA%D0%B0%D0%BF%20WordPress" title="LiveJournal" rel="nofollow" target="_blank"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/icons/livejournal.png" width="16" height="16" alt="LiveJournal"/></a><a class="a2a_button_vk" href="http://www.addtoany.com/add_to/vk?linkurl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F04%2F01%2Fwordpress-backup%2F&amp;linkname=%D0%91%D1%8D%D0%BA%D0%B0%D0%BF%20WordPress" title="Vkontakte" rel="nofollow" target="_blank"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/icons/vk.png" width="16" height="16" alt="Vkontakte"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F04%2F01%2Fwordpress-backup%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F04%2F01%2Fwordpress-backup%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F04%2F01%2Fwordpress-backup%2F&amp;counturl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F04%2F01%2Fwordpress-backup%2F&amp;count=horizontal&amp;text=%D0%91%D1%8D%D0%BA%D0%B0%D0%BF%20WordPress" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F04%2F01%2Fwordpress-backup%2F&amp;counturl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F04%2F01%2Fwordpress-backup%2F&amp;count=horizontal&amp;text=%D0%91%D1%8D%D0%BA%D0%B0%D0%BF%20WordPress" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F04%2F01%2Fwordpress-backup%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F04%2F01%2Fwordpress-backup%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><!--<![endif]--><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F04%2F01%2Fwordpress-backup%2F&amp;title=%D0%91%D1%8D%D0%BA%D0%B0%D0%BF%20WordPress" id="wpa2a_6"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.beerhead.ru/blog/2010/04/01/wordpress-backup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Софтово-железячное</title>
		<link>http://www.beerhead.ru/blog/2010/03/31/software-n-hardware/</link>
		<comments>http://www.beerhead.ru/blog/2010/03/31/software-n-hardware/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 20:11:23 +0000</pubDate>
		<dc:creator>antipod</dc:creator>
				<category><![CDATA[Красноглазие]]></category>
		<category><![CDATA[chieftec]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[raid]]></category>
		<category><![CDATA[панорама]]></category>

		<guid isPermaLink="false">http://www.beerhead.ru/blog/?p=1112</guid>
		<description><![CDATA[1. После 2.5 лет бесперебойной работы (говоря бесперебойная, подразумевая 24/7) сгорел 450 Вт блок питания Chieftec. Причину поломки пока не выяснил, но есть мнение, что остановился кулер, БП перегрелся да и здох. Вместо него поставил БП от этого же производителя но на 400 Вт, 10 дней &#8211; полет нормальный. 2. В конец устав от тормозов [...]]]></description>
			<content:encoded><![CDATA[<p>1. После 2.5 лет бесперебойной работы (говоря бесперебойная, подразумевая 24/7) сгорел 450 Вт блок питания Chieftec. Причину поломки пока не выяснил, но есть мнение, что остановился кулер, БП перегрелся да и здох. Вместо него поставил БП от этого же производителя но на 400 Вт, 10 дней &#8211; полет нормальный.</p>
<p>2. В конец устав от тормозов при одновременной работе в Lightroom и Photoshop, решил добавить в рабочую машинку еще 2 гига оперативы к уже имеющимся двум. Из закромов были извлечены два модуля Corsair XMS2-6400C4, для которых производителем заявлена возможность работать на таймингах 4-4-4-12. Два аналогичных модуля успешно крутятся в машине не первый год, а эта пара с завидным постоянством рушила систему в BSOD. В сервисе, в свое время, менять модули по гарантии отказались, мотивировав тем, что тест памяти ошибок не выявил. При таймингах 5-5-5-18 система работает стабильно, да черт бы с ней, что неуловимо медленней <img src='http://www.beerhead.ru/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>3. В сервант под Fedora 12 воткнул два старых IDE винта, некогда работавших в софтовом зеркальном рейде. Долго не мог понять почему один из винтов не форматируется. Выяснилось, что умная линуха без спросу создала рейд-массив. Очевидно злую шутку сыграло наличие служебной информации о RAID на этих винтах.</p>
<p>Пришлось ручками удалять метки.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">dmraid <span style="color: #660033;">-r</span> <span style="color: #660033;">-E</span></pre></div></div>

<p>В системе быстренько были опознаны бывшие рейдовые винты и предложено удалить с них метки принадлежности к рейду.<br />
После перезагрузки появились /dev/sdb1 и /dev/sdd1, соответственно.</p>
<p>4. В свое время, размещал в этом блоге панораму Будапешта с помощью плагина WP-PhotoNav. Очень не понравилось, что перемещение картинки происходит при Mouse Over. Намного удобнее, имхо, перемещние при нажатой левой кнопке мыши. Вот эта мысль наряду с некоторыми другими была доведена до автора плагина. В новой версии этот функционал реализован. Страница плагина: <a href="http://fabianmoser.at/wp-photonav">http://fabianmoser.at/wp-photonav</a></p>
<p>5. Photoshop конечно всем хорош, но собирать большие панорамы в нем &#8211; адово занятие, особенно если использовать Auto-Align Layers и Auto-Blend Layers. Катастрофически не хватает оперативы. В настоящий момент собираю панорамы с помощью Autopano Giga. Функционально, быстро, с умеренным расходом памяти и хорошим результатом.</p>
<p><strong>UPD</strong></p>
<p>6. А еще вспомнил про неприятный баг, с которым столкнулся при переносе почтовых ящиков пользователей с локальных машин на сервер. По плану подразумевалось, что доступ к ящикам будет открыт с помощью виндовых шар. Уж не знаю, проблема ли в The Bat!, или в шарах, или и в том и другом сразу, но в определенные моменты содержимое папки &laquo;Входящие&raquo; бесследно пропадало, файлы messages.tbb и messages.tbn оказывались перезаписаны и пусты. Содержимое вложенных в Inbox папок оставалось неповрежденным.</p>
<p>Условия, при которых происходил сей коллапс установить не удалось, но отключение сжатия папок проблему решило. Причем отключать сжатие нужно как в настройках всего ящика, так и для папки &laquo;Входящие&raquo;.</p>
<p><a class="a2a_button_livejournal" href="http://www.addtoany.com/add_to/livejournal?linkurl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F31%2Fsoftware-n-hardware%2F&amp;linkname=%D0%A1%D0%BE%D1%84%D1%82%D0%BE%D0%B2%D0%BE-%D0%B6%D0%B5%D0%BB%D0%B5%D0%B7%D1%8F%D1%87%D0%BD%D0%BE%D0%B5" title="LiveJournal" rel="nofollow" target="_blank"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/icons/livejournal.png" width="16" height="16" alt="LiveJournal"/></a><a class="a2a_button_vk" href="http://www.addtoany.com/add_to/vk?linkurl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F31%2Fsoftware-n-hardware%2F&amp;linkname=%D0%A1%D0%BE%D1%84%D1%82%D0%BE%D0%B2%D0%BE-%D0%B6%D0%B5%D0%BB%D0%B5%D0%B7%D1%8F%D1%87%D0%BD%D0%BE%D0%B5" title="Vkontakte" rel="nofollow" target="_blank"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/icons/vk.png" width="16" height="16" alt="Vkontakte"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F31%2Fsoftware-n-hardware%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F31%2Fsoftware-n-hardware%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F31%2Fsoftware-n-hardware%2F&amp;counturl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F31%2Fsoftware-n-hardware%2F&amp;count=horizontal&amp;text=%D0%A1%D0%BE%D1%84%D1%82%D0%BE%D0%B2%D0%BE-%D0%B6%D0%B5%D0%BB%D0%B5%D0%B7%D1%8F%D1%87%D0%BD%D0%BE%D0%B5" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F31%2Fsoftware-n-hardware%2F&amp;counturl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F31%2Fsoftware-n-hardware%2F&amp;count=horizontal&amp;text=%D0%A1%D0%BE%D1%84%D1%82%D0%BE%D0%B2%D0%BE-%D0%B6%D0%B5%D0%BB%D0%B5%D0%B7%D1%8F%D1%87%D0%BD%D0%BE%D0%B5" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F31%2Fsoftware-n-hardware%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F31%2Fsoftware-n-hardware%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><!--<![endif]--><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F31%2Fsoftware-n-hardware%2F&amp;title=%D0%A1%D0%BE%D1%84%D1%82%D0%BE%D0%B2%D0%BE-%D0%B6%D0%B5%D0%BB%D0%B5%D0%B7%D1%8F%D1%87%D0%BD%D0%BE%D0%B5" id="wpa2a_8"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.beerhead.ru/blog/2010/03/31/software-n-hardware/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress 2.9.2. У вас недостаточно прав для просмотра этой страницы</title>
		<link>http://www.beerhead.ru/blog/2010/03/10/wordpress-292-not-enough-rights/</link>
		<comments>http://www.beerhead.ru/blog/2010/03/10/wordpress-292-not-enough-rights/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 18:53:05 +0000</pubDate>
		<dc:creator>antipod</dc:creator>
				<category><![CDATA[Красноглазие]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.beerhead.ru/blog/?p=1069</guid>
		<description><![CDATA[Обновился до WordPress 2.9.2, но при попытке входа в админку получил по всей роже текстом &#171;У вас недостаточно прав для просмотра этой страницы&#187;. Так я ж вроде как админ&#8230; Должны быть права&#8230; Методом тыка было установлено, что плагин WP-DB-Backup обезьянит с новой версией WordPress. Все что нужно сделать &#8211; переименовать или удалить /wp-content/plugins/wp-db-backup/wp-db-backup.php Ждем новой [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="stop-in-the-name-of-love" src="http://www.ideachampions.com/heart/oak%20lawn%20stop%20sign.jpg" alt="" width="210" height="270" />Обновился до WordPress 2.9.2, но при попытке входа в админку получил по всей роже текстом &laquo;У вас недостаточно прав для просмотра этой страницы&raquo;. Так я ж вроде как админ&#8230; Должны быть права&#8230;</p>
<p>Методом тыка было установлено, что плагин <strong>WP-DB-Backup </strong>обезьянит с новой версией WordPress. Все что нужно сделать &#8211; переименовать или удалить <em>/wp-content/plugins/wp-db-backup/wp-db-backup.php</em></p>
<p>Ждем новой версии плагина.</p>
<p><a class="a2a_button_livejournal" href="http://www.addtoany.com/add_to/livejournal?linkurl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F10%2Fwordpress-292-not-enough-rights%2F&amp;linkname=WordPress%202.9.2.%20%D0%A3%20%D0%B2%D0%B0%D1%81%20%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BE%D1%87%D0%BD%D0%BE%20%D0%BF%D1%80%D0%B0%D0%B2%20%D0%B4%D0%BB%D1%8F%20%D0%BF%D1%80%D0%BE%D1%81%D0%BC%D0%BE%D1%82%D1%80%D0%B0%20%D1%8D%D1%82%D0%BE%D0%B9%20%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B" title="LiveJournal" rel="nofollow" target="_blank"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/icons/livejournal.png" width="16" height="16" alt="LiveJournal"/></a><a class="a2a_button_vk" href="http://www.addtoany.com/add_to/vk?linkurl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F10%2Fwordpress-292-not-enough-rights%2F&amp;linkname=WordPress%202.9.2.%20%D0%A3%20%D0%B2%D0%B0%D1%81%20%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BE%D1%87%D0%BD%D0%BE%20%D0%BF%D1%80%D0%B0%D0%B2%20%D0%B4%D0%BB%D1%8F%20%D0%BF%D1%80%D0%BE%D1%81%D0%BC%D0%BE%D1%82%D1%80%D0%B0%20%D1%8D%D1%82%D0%BE%D0%B9%20%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B" title="Vkontakte" rel="nofollow" target="_blank"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/icons/vk.png" width="16" height="16" alt="Vkontakte"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F10%2Fwordpress-292-not-enough-rights%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F10%2Fwordpress-292-not-enough-rights%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F10%2Fwordpress-292-not-enough-rights%2F&amp;counturl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F10%2Fwordpress-292-not-enough-rights%2F&amp;count=horizontal&amp;text=WordPress%202.9.2.%20%D0%A3%20%D0%B2%D0%B0%D1%81%20%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BE%D1%87%D0%BD%D0%BE%20%D0%BF%D1%80%D0%B0%D0%B2%20%D0%B4%D0%BB%D1%8F%20%D0%BF%D1%80%D0%BE%D1%81%D0%BC%D0%BE%D1%82%D1%80%D0%B0%20%D1%8D%D1%82%D0%BE%D0%B9%20%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F10%2Fwordpress-292-not-enough-rights%2F&amp;counturl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F10%2Fwordpress-292-not-enough-rights%2F&amp;count=horizontal&amp;text=WordPress%202.9.2.%20%D0%A3%20%D0%B2%D0%B0%D1%81%20%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BE%D1%87%D0%BD%D0%BE%20%D0%BF%D1%80%D0%B0%D0%B2%20%D0%B4%D0%BB%D1%8F%20%D0%BF%D1%80%D0%BE%D1%81%D0%BC%D0%BE%D1%82%D1%80%D0%B0%20%D1%8D%D1%82%D0%BE%D0%B9%20%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F10%2Fwordpress-292-not-enough-rights%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F10%2Fwordpress-292-not-enough-rights%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><!--<![endif]--><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F03%2F10%2Fwordpress-292-not-enough-rights%2F&amp;title=WordPress%202.9.2.%20%D0%A3%20%D0%B2%D0%B0%D1%81%20%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BE%D1%87%D0%BD%D0%BE%20%D0%BF%D1%80%D0%B0%D0%B2%20%D0%B4%D0%BB%D1%8F%20%D0%BF%D1%80%D0%BE%D1%81%D0%BC%D0%BE%D1%82%D1%80%D0%B0%20%D1%8D%D1%82%D0%BE%D0%B9%20%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B" id="wpa2a_10"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.beerhead.ru/blog/2010/03/10/wordpress-292-not-enough-rights/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Панорама Майдана и как я ее делал</title>
		<link>http://www.beerhead.ru/blog/2010/02/27/maidan-panorama-howto/</link>
		<comments>http://www.beerhead.ru/blog/2010/02/27/maidan-panorama-howto/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 21:15:27 +0000</pubDate>
		<dc:creator>antipod</dc:creator>
				<category><![CDATA[Красноглазие]]></category>
		<category><![CDATA[Фотография]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[киев]]></category>
		<category><![CDATA[панорама]]></category>
		<category><![CDATA[украина]]></category>
		<category><![CDATA[фото]]></category>

		<guid isPermaLink="false">http://www.beerhead.ru/blog/?p=981</guid>
		<description><![CDATA[В прошлом году я размещал у себя в блоге панораму Будапешта. Решение, которое было использовано, нельзя назвать удачным. Для показа фотографии использовался плагин WP-PhotoNav, который банально подтягивал jpg с сервера и обеспечивал его горизонтальную прокрутку. В этот раз я пошел другим путем. С помощью Pano2VR я затолкал jpg во флэш, добавил туда немного рюшек в [...]]]></description>
			<content:encoded><![CDATA[<p>В прошлом году я размещал у себя в блоге панораму Будапешта. Решение, которое было использовано, нельзя назвать удачным. Для показа фотографии использовался плагин <a href="http://fabianmoser.at/wp-photonav" target="_blank">WP-PhotoNav</a>, который банально подтягивал jpg с сервера и обеспечивал его горизонтальную прокрутку. В этот раз я пошел другим путем.</p>
<p>С помощью Pano2VR я затолкал jpg во флэш, добавил туда немного рюшек в виде поддержки полноэкранного режима, масштабирования, прокрутки по по вертикали/горизонтали.</p>
<p>Софтина  довольно гибкая, описывать функционал ее не стану, подробно с ним можно ознакомиться на <a href="http://gardengnomesoftware.com/pano2vr.php" target="_blank">сайте</a> программы и в статейке на <a href="http://habrahabr.ru/blogs/3d_graphics/83434/#habracut" target="_blank">Хабре</a>.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1049" title="Майдан Незалежности" src="http://www.beerhead.ru/blog/wp-content/uploads/2010/02/maidan_8001.jpg" alt="" width="800" height="288" /></p>
<p>После того, как ролик был залит на сервак, осталось всего ничего, затолкать его в пост. В процессе поиска обнаружил минималистичный плагин WP-SFWObject. Скачать его можно <a href="http://wordpress.org/extend/plugins/wp-swfobject/" target="_blank">здесь</a>.</p>
<p><code>А это все, что нужно вставить в пост, чтобы было счастье.<br />
[SWF]movie.swf, width, heigth[/SWF]</code></p>
<p>Под катом результат&#8230;</p>
<p><strong><em>Traffic warning!!!</em></strong></p>
<p><span id="more-981"></span></p>
<p><em>Перемещаться по панораме можно, удерживая левую конпку мыши и яростно тягая оную.</em></p>
<p><em>Увеличение/уменьшение картинки клавишами &laquo;+&raquo; и &laquo;-&raquo; или &laquo;Shift&raquo;/&raquo;Ctrl&raquo;.</em></p>
<p><em>Не стесняемся использовать полноэкранный режим, который включается через правую кнопку мыши.</em></p>
<p><strong>Майдан Незалежності</strong></p>
<p>
<object width="800" height="400">
<param name="movie" value="http://www.beerhead.ru/blog/wp-content/uploads/flash/maidan_big.swf"></param>
<param name="quality" value="high"></param>
<param name="wmode" value="window"></param>
<param name="menu" value="false"></param>
<param name="bgcolor" value="#FFFFFF"></param>
<param name="allowScriptAccess" value="always"></param>
<param name="allowFullScreen" value="true"></param>
<embed type="application/x-shockwave-flash" width="800" height="400" src="http://www.beerhead.ru/blog/wp-content/uploads/flash/maidan_big.swf" quality="high" bgcolor="#FFFFFF" wmode="window" menu="false" allowFullScreen="true" ></embed>
</object>
</p>
<p>Или можно сразу открыть панораму во весь размер окна браузера по этому <a href="http://www.beerhead.ru/blog/wp-content/uploads/flash/maidan_big.swf" target="_self">линку</a>.</p>
<p><a class="a2a_button_livejournal" href="http://www.addtoany.com/add_to/livejournal?linkurl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F02%2F27%2Fmaidan-panorama-howto%2F&amp;linkname=%D0%9F%D0%B0%D0%BD%D0%BE%D1%80%D0%B0%D0%BC%D0%B0%20%D0%9C%D0%B0%D0%B9%D0%B4%D0%B0%D0%BD%D0%B0%20%D0%B8%20%D0%BA%D0%B0%D0%BA%20%D1%8F%20%D0%B5%D0%B5%20%D0%B4%D0%B5%D0%BB%D0%B0%D0%BB" title="LiveJournal" rel="nofollow" target="_blank"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/icons/livejournal.png" width="16" height="16" alt="LiveJournal"/></a><a class="a2a_button_vk" href="http://www.addtoany.com/add_to/vk?linkurl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F02%2F27%2Fmaidan-panorama-howto%2F&amp;linkname=%D0%9F%D0%B0%D0%BD%D0%BE%D1%80%D0%B0%D0%BC%D0%B0%20%D0%9C%D0%B0%D0%B9%D0%B4%D0%B0%D0%BD%D0%B0%20%D0%B8%20%D0%BA%D0%B0%D0%BA%20%D1%8F%20%D0%B5%D0%B5%20%D0%B4%D0%B5%D0%BB%D0%B0%D0%BB" title="Vkontakte" rel="nofollow" target="_blank"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/icons/vk.png" width="16" height="16" alt="Vkontakte"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F02%2F27%2Fmaidan-panorama-howto%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F02%2F27%2Fmaidan-panorama-howto%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F02%2F27%2Fmaidan-panorama-howto%2F&amp;counturl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F02%2F27%2Fmaidan-panorama-howto%2F&amp;count=horizontal&amp;text=%D0%9F%D0%B0%D0%BD%D0%BE%D1%80%D0%B0%D0%BC%D0%B0%20%D0%9C%D0%B0%D0%B9%D0%B4%D0%B0%D0%BD%D0%B0%20%D0%B8%20%D0%BA%D0%B0%D0%BA%20%D1%8F%20%D0%B5%D0%B5%20%D0%B4%D0%B5%D0%BB%D0%B0%D0%BB" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F02%2F27%2Fmaidan-panorama-howto%2F&amp;counturl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F02%2F27%2Fmaidan-panorama-howto%2F&amp;count=horizontal&amp;text=%D0%9F%D0%B0%D0%BD%D0%BE%D1%80%D0%B0%D0%BC%D0%B0%20%D0%9C%D0%B0%D0%B9%D0%B4%D0%B0%D0%BD%D0%B0%20%D0%B8%20%D0%BA%D0%B0%D0%BA%20%D1%8F%20%D0%B5%D0%B5%20%D0%B4%D0%B5%D0%BB%D0%B0%D0%BB" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F02%2F27%2Fmaidan-panorama-howto%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F02%2F27%2Fmaidan-panorama-howto%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><!--<![endif]--><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2010%2F02%2F27%2Fmaidan-panorama-howto%2F&amp;title=%D0%9F%D0%B0%D0%BD%D0%BE%D1%80%D0%B0%D0%BC%D0%B0%20%D0%9C%D0%B0%D0%B9%D0%B4%D0%B0%D0%BD%D0%B0%20%D0%B8%20%D0%BA%D0%B0%D0%BA%20%D1%8F%20%D0%B5%D0%B5%20%D0%B4%D0%B5%D0%BB%D0%B0%D0%BB" id="wpa2a_12"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.beerhead.ru/blog/2010/02/27/maidan-panorama-howto/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Файлопомойка. Часть 3. WebUI</title>
		<link>http://www.beerhead.ru/blog/2009/12/19/fileserver-at-home-part-3-webui/</link>
		<comments>http://www.beerhead.ru/blog/2009/12/19/fileserver-at-home-part-3-webui/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 00:19:18 +0000</pubDate>
		<dc:creator>antipod</dc:creator>
				<category><![CDATA[Красноглазие]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[файл-сервер]]></category>

		<guid isPermaLink="false">http://www.beerhead.ru/blog/?p=869</guid>
		<description><![CDATA[Да, вот здесь начинается самая веселуха, ибо над развертыванием этого проклятого ГУЯ бился я, ну наверное, сутки. В итоге все конечно разрешилось, причем самым презабавным образом и за пару минут, однако не буду более забегать вперед, все будет последовательно. Как я уже писал во второй части цикла &#171;Файлопомойка&#187;, в качестве торрент-клиента я выбрал rTorrent, соответственно [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="grandma-linux" src="http://randomerror.files.wordpress.com/2009/01/43_kreatiff_ziza_151430.jpg" alt="" width="393" height="314" />Да, вот здесь начинается самая веселуха, ибо над развертыванием этого проклятого ГУЯ бился я, ну наверное, сутки. В итоге все конечно разрешилось, причем самым презабавным образом и за пару минут, однако не буду более забегать вперед, все будет последовательно.</p>
<p>Как я уже писал во второй части цикла &laquo;Файлопомойка&raquo;, в качестве торрент-клиента я выбрал rTorrent, соответственно и WebUI выбирался для него. Скоренький поиск в Гугле показал, что самым обсуждаемым, читай востребованным, является wTorrent. Когда я только только начинал читать ман по установке, я и не знал, подо что подписался.</p>
<p><span id="more-869"></span></p>
<p>Для развертывания wTorrent&#8217;a требуется HTTP-сервер. Маны на выбор предлагали lighttpd и Apache. Хотя апач и присутствовал в моем образе федоры, для чистоты эксперимента и азарта для, решил поставить lighttpd и обрести счастье с ним.</p>
<p><em><strong>Пляски с lighttpd</strong></em></p>
<p>Помимо http-серванта нужно ставить php, php-xmlrpc, php-pdo и sqlite. Опять же из-за лени не стал собирать все это барахло ручками, а ограничился устанвкой из репозитория.</p>
<pre>yum install lighttpd php php-xmlrpc php-pd0 sqlite</pre>
<p>Настройку lighttpd я здесь рассматривать не буду ибо все начинает крутиться после установки и почти никакого дополнительного вмешательства не требует. За тонкой настройкой под себя можно опять же обратиться к Гуглу.</p>
<p>Мне потребовалось внести в lighttpd.conf следующие изменения:</p>
<p>mcedit /etc/lighttpd.conf</p>
<p>Добавить строку в секцию server.modules:</p>
<pre>"mod_scgi",</pre>
<p>И нижеприведенный код в конец файла:</p>
<pre>scgi.server = (
 "/RPC2" =&gt; # RT_DIR
  ( "127.0.0.1" =&gt;
   (
    "host" =&gt; "127.0.0.1", # к какому хосту коннектится
    "port" =&gt; 5000, # К какому порту подключаться. Порт прописан в файле .rtorrent.rc
    "check-local" =&gt; "disable"
   )
  )
 )</pre>
<p>Во второй части я писал о том, что в конфиг rTorrent&#8217;а нужно добавить строку</p>
<pre>scgi_port = 127.0.0.1:5000</pre>
<p>вот теперь то она и заработает.</p>
<p>Плюс я изменил порт на котором слушает lighttpd c 80 на 81, раскомментировав строку:</p>
<pre>server.port = 81 # RT_PORT</pre>
<p>Отдельно хочу обратить внимание на SELinux (Security Enhanced Linux). Установленные по умолчанию политики безопасности могут препятсовать исполнения php-скриптов (с чем я в дальнейшем столкнулся, но уже с апачем), либо иным образом препятсовать нормальной работе связки lighttpd + rtorrent + wtorrent. Поэтому в тестовых целях я изменял политику SELinux с Enforced на Permissive и внимательным образом изучал сообщения системы, коли таковые появлялись.</p>
<p>Однако&#8230; (всегда есть однако). Здесь я опущу камлания с wtorrent&#8217;ом, который, кстати сказать мне не удалось завести под lighttpd из-за банальной причины, &#8211; не выполнялись php скрипты. Уж не знаю в чем была причина, курение манов, чтение форумов и прочего результата не дали, но я переключился на апач, под которым в конечном итоге все заработало.</p>
<p><em><strong>Гармония с Apache</strong></em></p>
<p>Так, для начала прикручиваем mod_scgi к Апачу (Сайт проекта SCGI: <a href="http://python.ca/scgi/" target="_blank">http://python.ca/scgi/</a>):</p>
<pre><span>wget http://python.ca/scgi/releases/scgi-1.14.tar.gz</span><span>
</span><span>tar xvfz scgi-1.14.tar.gz</span><span>
</span><span>cd scgi-1.14</span><span>
</span><span>cd apache2</span><span>
</span><span>apxs -i -c mod_scgi.c</span></pre>
<p>Далее быстренько правим конфиг Апача:</p>
<pre><span>mcedit /etc/httpd/httpd.conf</span></pre>
<p>В конец файла прописываем следующие строки:</p>
<pre><span>LoadModule</span><span> scgi_module </span><span>/</span><span>usr</span><span>/</span><span>lib</span><span>/</span><span>httpd</span><span>/</span><span>modules</span><span>/</span><span>mod_scgi</span><span>.</span><span>so
</span><span>SCGIMount</span><span> </span><span>/</span><span>RPC2 </span><span>127.0</span><span>.</span><span>0.1</span><span>:</span><span>5000</span></pre>
<p>Все Апач настроен, можно ребутить демон.</p>
<p>На данном этапе все подготовительные работы выполнены и можно смело раскатывать wtorrent.</p>
<p><em><strong>Камлания с wTorrent</strong></em></p>
<p>Вот здесь я вынужден сделать небольшое отступление от темы и сразу предостеречь возможного потенциального читателя от тех граблей, на которые наступил.</p>
<p>Во-первых, не стоит скачивать архив, формируемый автоматически из раздела c этой страницы: <a href="http://www.wtorrent-project.org/trac/browser/trunk/wtorrent" target="_blank">http://www.wtorrent-project.org/trac/browser/trunk/wtorrent</a> По какой-то причине в него не был упакован пустой каталог tpl_c, чего я не заметил, а потом долго пытался понять, почему же у меня не открывается даже install.php. Лучше всего утягивать wtorrent через svn:</p>
<pre>svn co svn://wtorrent-project.org/repos/trunk/wtorrent/ wtorrent</pre>
<p>Во-вторых, права доступа к папкам. В английском мане почему-то смело советуют делать chmod 777 на все содержимое папки wtorrent, что безусловно является большим злом. На самом деле достаточно сделать:</p>
<pre>chmod 777 -R torrents/ db/ tpl_c/ conf/</pre>
<p>В конечном итоге после всех этих манипуляций мне удалось завести install.php. На что следует обратить внимание там? Несмотря на то, что порт scgi во всех конфигах был указан как 5000. В графе &laquo;rTorrent scgi port&raquo; должно стоять 80 (то есть нужно оставить как есть). Графы &laquo;Folder to save uploaded torrents&raquo; и &laquo;Default folder to save torrent data&raquo; можно заполнить по своему усмотрению, главное не забыть дать права на запись.</p>
<p>В тестовых целях я оставил все как есть, радостно жмахнул на &laquo;Test config&raquo; и получил по всей роже вот этим:</p>
<p><img class="alignleft size-full wp-image-870" title="wtorrent_install_sux" src="http://www.beerhead.ru/blog/wp-content/uploads/2009/12/wtorrent_install_sux.jpg" alt="wtorrent_install_sux" width="472" height="78" /></p>
<p>Вот с этого момента пошли сутки. Я пересобирал rtorrent с разными ключами, предположив, что по какой-то причине XMLRPC не был включен в установке, которую я взял из репозитория, пересобирал libtorrent, утягивал более старые версии и собирал их, ничего не помогало. Плясал с настройками, проверял и еще раз перепроверял конфиги, читал логи, форумы, ЧАВО и прочее. В какой-то момент я же было отчаялся завести rTorrent в связке с wTorrent&#8217;ом и пошел искать альтернативы, коих оказалось предостаточно, но&#8230; все они и рядом не стояли с wTorrent&#8217;ом по удобству и функциональности интерфейса, а кроме того wTorrent подкупал возможностью создания нескольких учетных записей. Единственный WebUI, который мне понравился и который я был готов оставить и использовать &#8211; ruTorrent. Интерфейс практически один в один как в uTorrent WebUI, плюс приятным бонусом обновление скоростей и данных о закачках в реальном времени и возможность назначать торрентам метки. Последний фичи я не встречал ни в одном из протестированных WebUI.</p>
<p>Как выяснилось сутками позднее, на некоторых машинах последняя ревизии wTorrent&#8217;a и правда не работала. Проблема решалась банально путем выкачивания предыдущей:</p>
<pre>svn co -r99 svn://wtorrent-project.org/repos/trunk/wtorrent/ wtorrent99</pre>
<p>На данном этапе можно смело копировать свежескаченый wtorrent на веб-сервер, назначать права доступа и инсталлить его. После чего с радостными воплями и гиканьем пользоваться всеми плюшками прекрасного WebUI.</p>
<p><img title="wtorrent_rox" src="http://www.beerhead.ru/blog/wp-content/uploads/2009/12/wtorrent_rox.jpg" alt="wtorrent_rox" width="633" height="266" /></p>
<p>P.S. А еще, когда я выбирал себе WebUI и смотрел скриншоты, меня очень подкупила надпись &laquo;Feeds&raquo;. Уж не RSS ли это загрузчик, подумалось мне. К большому сожалению оказалось, что нет. Если б он имелся, то связку rTorrent+wTorrent можно было бы считать однозначно лучшей.</p>
<p>P.S.S. По завершении всех этих мытарств, я а натолкнулся на другой проект &#8211; torrentflux-b4rt, с которым провозился еще энное количество человеко часов, о чем расскажу в следующий раз. Плюс недавно вычитал про еще пару линуксовых качалок: kTorrent и Deluge. Так что эпопея с выбором торрент-качалки для файл-сервера продолжается.</p>
<p><a class="a2a_button_livejournal" href="http://www.addtoany.com/add_to/livejournal?linkurl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F19%2Ffileserver-at-home-part-3-webui%2F&amp;linkname=%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%BF%D0%BE%D0%BC%D0%BE%D0%B9%D0%BA%D0%B0.%20%D0%A7%D0%B0%D1%81%D1%82%D1%8C%203.%20WebUI" title="LiveJournal" rel="nofollow" target="_blank"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/icons/livejournal.png" width="16" height="16" alt="LiveJournal"/></a><a class="a2a_button_vk" href="http://www.addtoany.com/add_to/vk?linkurl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F19%2Ffileserver-at-home-part-3-webui%2F&amp;linkname=%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%BF%D0%BE%D0%BC%D0%BE%D0%B9%D0%BA%D0%B0.%20%D0%A7%D0%B0%D1%81%D1%82%D1%8C%203.%20WebUI" title="Vkontakte" rel="nofollow" target="_blank"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/icons/vk.png" width="16" height="16" alt="Vkontakte"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F19%2Ffileserver-at-home-part-3-webui%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F19%2Ffileserver-at-home-part-3-webui%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F19%2Ffileserver-at-home-part-3-webui%2F&amp;counturl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F19%2Ffileserver-at-home-part-3-webui%2F&amp;count=horizontal&amp;text=%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%BF%D0%BE%D0%BC%D0%BE%D0%B9%D0%BA%D0%B0.%20%D0%A7%D0%B0%D1%81%D1%82%D1%8C%203.%20WebUI" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F19%2Ffileserver-at-home-part-3-webui%2F&amp;counturl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F19%2Ffileserver-at-home-part-3-webui%2F&amp;count=horizontal&amp;text=%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%BF%D0%BE%D0%BC%D0%BE%D0%B9%D0%BA%D0%B0.%20%D0%A7%D0%B0%D1%81%D1%82%D1%8C%203.%20WebUI" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F19%2Ffileserver-at-home-part-3-webui%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F19%2Ffileserver-at-home-part-3-webui%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><!--<![endif]--><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F19%2Ffileserver-at-home-part-3-webui%2F&amp;title=%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%BF%D0%BE%D0%BC%D0%BE%D0%B9%D0%BA%D0%B0.%20%D0%A7%D0%B0%D1%81%D1%82%D1%8C%203.%20WebUI" id="wpa2a_14"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.beerhead.ru/blog/2009/12/19/fileserver-at-home-part-3-webui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Файлопомойка. Часть 2.</title>
		<link>http://www.beerhead.ru/blog/2009/12/16/file-server-at-home-part-2/</link>
		<comments>http://www.beerhead.ru/blog/2009/12/16/file-server-at-home-part-2/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 23:18:43 +0000</pubDate>
		<dc:creator>antipod</dc:creator>
				<category><![CDATA[Красноглазие]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[файл-сервер]]></category>

		<guid isPermaLink="false">http://www.beerhead.ru/blog/?p=824</guid>
		<description><![CDATA[Продолжаю собирать нечто похожее на файловый сервер. Очередь дошла до торрент-качалки. Среди всего разнообразия остановился на rTorrent, хотя до него посматривал в сторону Transmission. Не посленюю роль сыграло то, что рторрентом можно вполне себе вменяемо управлять через консоль, есть некое подобие интерефейса, плюс богатый выбор всяческих веб-интерфейсов, которые, к слову сказать, по функциональности сильно превосходят [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-859" title="rtorrent" src="http://www.beerhead.ru/blog/wp-content/uploads/2009/12/rtorrent.JPG" alt="rtorrent" width="349" height="293" />Продолжаю собирать нечто похожее на файловый сервер. Очередь дошла до торрент-качалки. Среди всего разнообразия остановился на rTorrent, хотя до него посматривал в сторону Transmission. Не посленюю роль сыграло то, что рторрентом можно вполне себе вменяемо управлять через консоль, есть некое подобие интерефейса, плюс богатый выбор всяческих веб-интерфейсов, которые, к слову сказать, по функциональности сильно превосходят используемый в трансмиссии.</p>
<p>К делу&#8230;</p>
<p><span id="more-824"></span></p>
<p>Сразу отмечу, что в процессе установки могут потребоваться дополнительные библиотеки, установка которых в данном мане не описана. Так что как не крути, а Google &#8211; лучший друг и наставник.</p>
<p><em><strong>Установка и настройка rTorrent</strong></em></p>
<p>Сайт разработчика библиотеки libtorrent и rtorrent&#8217;a: <a href="http://libtorrent.rakshasa.no/" target="_blank">http://libtorrent.rakshasa.no/</a></p>
<p>Дя начала скачиваем последнии версии libtorrent&#8217;a b rtorrent&#8217;a (на момент написания заметки последними были 0.12.6 и 0.8.6, соответственно). Лежат здесь: <a href="http://libtorrent.rakshasa.no/downloads/" target="_blank">http://libtorrent.rakshasa.no/downloads/</a></p>
<p>Либо дедовским методом, т.е. ручками:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>libtorrent.rakshasa.no<span style="color: #000000; font-weight: bold;">/</span>downloads<span style="color: #000000; font-weight: bold;">/</span>libtorrent-0.12.6.tar.gz
<span style="color: #c20cb9; font-weight: bold;">wget</span>  http:<span style="color: #000000; font-weight: bold;">//</span>libtorrent.rakshasa.no<span style="color: #000000; font-weight: bold;">/</span>downloads<span style="color: #000000; font-weight: bold;">/</span>rtorrent-0.8.6.tar.gz</pre></div></div>

<p>В первую очередь разворачиваем libtorrent:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> zxvf  libtorrent-0.12.6.tar.gz
<span style="color: #7a0874; font-weight: bold;">cd</span> libtorrent-0.12.6.tar.gz
.<span style="color: #000000; font-weight: bold;">/</span>autogen.sh
.<span style="color: #000000; font-weight: bold;">/</span>configure <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></div></div>

<p>Во имя грядущего счастья нужно еще прикрутить XMLRPC-C (Сайт проекта: <a href="http://xmlrpc-c.sourceforge.net/" target="_blank">http://xmlrpc-c.sourceforge.net/</a>)</p>
<p>Утягиваем новенькие сорцы:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># исходники упадут в папочку xmlrpc-c</span>
<span style="color: #c20cb9; font-weight: bold;">svn</span> <span style="color: #c20cb9; font-weight: bold;">co</span>  http:<span style="color: #000000; font-weight: bold;">//</span>xmlrpc-c.svn.sourceforge.net<span style="color: #000000; font-weight: bold;">/</span>svnroot<span style="color: #000000; font-weight: bold;">/</span>xmlrpc-c<span style="color: #000000; font-weight: bold;">/</span>advanced xmlrpc-c</pre></div></div>

<p>Ну или можно просто скачать tarball <img src='http://www.beerhead.ru/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  <a href="http://xmlrpc-c.svn.sourceforge.net/viewvc/xmlrpc-c/advanced.tar.gz?view=tar" target="_blank">http://xmlrpc-c.svn.sourceforge.net/viewvc/xmlrpc-c/advanced.tar.gz?view=tar</a></p>
<p>Процесс сборки и установки ничем принципиально не отличается</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">.<span style="color: #000000; font-weight: bold;">/</span>configure <span style="color: #660033;">--prefix</span>=<span style="color: #000000; font-weight: bold;">/</span>usr
<span style="color: #666666; font-style: italic;"># чтоб библиотечка упала куда надо, а то впоследствии конфиг rTorrent</span>
<span style="color: #666666; font-style: italic;">#ее не увидит я об этом ключе не знал, поэтому потом долго не мог понять,</span>
<span style="color: #666666; font-style: italic;"># почему конфигуратор rTorrent ее не видит пофиксилось в итоге просто</span>
<span style="color: #666666; font-style: italic;"># сначала whereis xmlrpc-c ,а потом</span>
<span style="color: #666666; font-style: italic;"># export PKG_CONFIG_PATH=/path/to/your/xmlrpc/lib</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></div></div>

<p>Теперь очередь rTorrent&#8217;a:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">.<span style="color: #000000; font-weight: bold;">/</span>autogen.sh
.<span style="color: #000000; font-weight: bold;">/</span>configure <span style="color: #660033;">--prefix</span>=<span style="color: #000000; font-weight: bold;">/</span>usr <span style="color: #660033;">--with-xmlrpc-c</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></div></div>

<p>&#8211;with-xmlrpc-c &#8211; чертовски важный ключ, без него rTorrent не откроет порт прослушки для взаимодействия с WebUI.</p>
<p>Далее в каталоге юзера нужно создать файл конфигурации .rtorrent.rc</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>EOF <span style="color: #000000; font-weight: bold;">&gt;&gt;</span>~<span style="color: #000000; font-weight: bold;">/</span>.rtorrent.rc
port_range = <span style="color: #000000;">10000</span>-<span style="color: #000000;">10005</span>
check_hash = <span style="color: #c20cb9; font-weight: bold;">yes</span>
directory = <span style="color: #000000; font-weight: bold;">/</span>where<span style="color: #000000; font-weight: bold;">/</span>to<span style="color: #000000; font-weight: bold;">/</span>save<span style="color: #000000; font-weight: bold;">/</span>torrent<span style="color: #000000; font-weight: bold;">/</span>data
session = <span style="color: #000000; font-weight: bold;">/</span>where<span style="color: #000000; font-weight: bold;">/</span>to<span style="color: #000000; font-weight: bold;">/</span>save<span style="color: #000000; font-weight: bold;">/</span>session<span style="color: #000000; font-weight: bold;">/</span>data
<span style="color: #666666; font-style: italic;"># очень полезная опция. rtorrent ,будет мониторить папку на предмет</span>
<span style="color: #666666; font-style: italic;"># появления в ней новых торрент-файлов и автоматически ставить их</span>
<span style="color: #666666; font-style: italic;"># на закачку. Особую актуальность приобретет, когда будем</span>
<span style="color: #666666; font-style: italic;"># настраивать загрузку торрентов через RSS</span>
schedule = watch_directory,<span style="color: #000000;">5</span>,<span style="color: #000000;">5</span>,<span style="color: #007800;">load_start</span>=~<span style="color: #000000; font-weight: bold;">/</span>torrent<span style="color: #000000; font-weight: bold;">/*</span>.torrent
tos = default
upload_rate = <span style="color: #000000;">0</span>
download_rate = <span style="color: #000000;">0</span>
EOF</pre></div></div>

<p>Вот <a href="http://www.volmed.org.ru/wiki/index.php/%D0%9D%D0%B5%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%BE%D0%B9_%D1%85%D0%B5%D0%BB%D0%BF_%D0%BF%D0%BE_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8E_rtorrent_-_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82_torrent_%D1%81%D0%B5%D1%82%D0%B8" target="_blank">здесь</a> лежит отличный ман по конфигу на русском языку с подробными комментариями какой ключ за что отвечает. Ну и дополнительно по опциям можно подсмотреть <a href="http://ru.wikibooks.org/wiki/RTorrent" target="_blank">тут</a>.</p>
<p>Плюс нужно обязательно добавить строку:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># понадобится позже для WebUI</span>
scgi_port = 127.0.0.1:<span style="color: #000000;">5000</span></pre></div></div>

<p>Кроме того, логично предположить, что на файл-сервере не всегда будет запущена сессия юзера или подключен терминальчик по ssh. Так что процесс должен висеть в фоне и тихо, но грамотно делать свое дело и, плюс, запускаться при старте системы.</p>
<p>Для этих целей сначала установим <strong>screen</strong>. Тут я поленился собирать его из исходников, поэтому просто:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">yum <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #c20cb9; font-weight: bold;">screen</span></pre></div></div>

<p>А дальше делаем вот такой скрипт, который гнусно скопипастен отсюда: <a href="http://www.fedoramd.org/wiki/Rtorrent">http://www.fedoramd.org/wiki/Rtorrent</a></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Starting rtorrent in a screen session as daemon</span>
<span style="color: #666666; font-style: italic;"># Author: Vasile Vsx</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># chkconfig: 2345 50 01</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># description: start rtorrent detached</span>
<span style="color: #666666; font-style: italic;"># processname: rtorrent</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># source function library</span>
. <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>rc.d<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>functions
&nbsp;
<span style="color: #666666; font-style: italic;"># Source networking configuration.</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-r</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>sysconfig<span style="color: #000000; font-weight: bold;">/</span>network <span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> . <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>sysconfig<span style="color: #000000; font-weight: bold;">/</span>network
&nbsp;
<span style="color: #666666; font-style: italic;"># Check that networking is up.</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\$</span>{NETWORKING}&quot;</span> = <span style="color: #ff0000;">&quot;no&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>sysconfig<span style="color: #000000; font-weight: bold;">/</span>rtorrent <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
        . <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>sysconfig<span style="color: #000000; font-weight: bold;">/</span>rtorrent
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-z</span> \<span style="color: #007800;">$RTORRENT_USER</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
        <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #007800;">RETVAL</span>=<span style="color: #000000;">0</span>
&nbsp;
start<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-n</span> <span style="color: #ff0000;">&quot;Starting rtorrent: &quot;</span>
        daemon <span style="color: #660033;">--user</span> \<span style="color: #007800;">$RTORRENT_USER</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">screen</span> <span style="color: #660033;">-dmS</span> rtorrent <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>rtorrent \<span style="color: #007800;">$OPTIONS</span>
        <span style="color: #007800;">RETVAL</span>=\<span style="color: #007800;">$?</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
stop<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-n</span> <span style="color: #ff0000;">&quot;Stopping rtorrent: &quot;</span>
        killproc rtorrent <span style="color: #660033;">-INT</span>
        <span style="color: #007800;">RETVAL</span>=\<span style="color: #007800;">$?</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
restart<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
        stop
        start
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\$</span>1&quot;</span> <span style="color: #000000; font-weight: bold;">in</span>
  start<span style="color: #7a0874; font-weight: bold;">&#41;</span>
        start
        <span style="color: #000000; font-weight: bold;">;;</span>
  stop<span style="color: #7a0874; font-weight: bold;">&#41;</span>
        stop
        <span style="color: #000000; font-weight: bold;">;;</span>
  restart<span style="color: #7a0874; font-weight: bold;">&#41;</span>
        restart
        <span style="color: #000000; font-weight: bold;">;;</span>
  status<span style="color: #7a0874; font-weight: bold;">&#41;</span>
        status rtorrent
        <span style="color: #000000; font-weight: bold;">;;</span>
  <span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> $<span style="color: #ff0000;">&quot;Usage: <span style="color: #000099; font-weight: bold;">\$</span>0 {start|stop|status|restart}&quot;</span>
        <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">esac</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #007800;">$RETVAL</span></pre></td></tr></table></div>

<p><strong>Отдельно обращаю внимание на символ &#8216;\&#8217;</strong>. <strong>В конечном скрипте его уже не должно быть, поэтому копипаст в текстовый файл подразумевает удаление &#8216;\&#8217; ручками.</strong></p>
<p>Выше исходник, а ниже, соответственно куда его сохранять и что с этим файлом потом делать.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">touch</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>rc.d<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>rtorrent
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>rc.d<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">chmod</span> a+x rtorrent
chkconfig <span style="color: #660033;">--add</span> rtorrent</pre></div></div>

<p><strong></strong>Плюс определяем юзера из под которого будез запускаться rTorrent. Никто конечно не запрещает указать root&#8217;a, но это не изящно. А вот на что нужно обратить внимание, так это на то, чтоб у этого юзера были права на чтение\запись, указанных в конфиге rTorrent&#8217;a папок. И еще, rTorrent будет искать конфиг в домашней паки юзера из под которого он запущен, поэтому целесообразно запускать его от того пользователя в чьей папке лежит конфиг.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>EOF <span style="color: #000000; font-weight: bold;">&gt;&gt;/</span>etc<span style="color: #000000; font-weight: bold;">/</span>sysconfig<span style="color: #000000; font-weight: bold;">/</span>rtorrent
<span style="color: #007800;">RTORRENT_USER</span>=username
EOF</pre></div></div>

<p>Запуск остановка rTorrent&#8217;a осуществляется командами:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>service rtorrent start
<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>service rtorrent stop</pre></div></div>

<p>Для подключения к сессии rTorrent&#8217;a: <strong>screen -r</strong></p>
<p>Выход из сессии осуществляется комбинацией клавиш СTRL+A D.</p>
<p>На данном этапе установку rTorrent&#8217;a можно считать завершенной. Софтина будет весело перекидываться пакетами с другими пирами, при этом не нагружая систему. Лепота.</p>
<p><em><strong>RSS Downloader</strong></em></p>
<p>Наличие действующего rTorrent&#8217;a &#8211; это конечно хорошо, но немного автоматизации не помешает. Избалованный RSS загрузчиком uTorrent, захотел что-то подобное и здесь. На выбор были предложены разные скрипты в хомяке автора rTorrrent&#8217;a, но мне под руку попался более легковесный и простой в использовании, хотя, возможно, ему не достает гибкости и требуются кое-какие костыли, но со своей задачей он справляется.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># This is released under the GPL</span>
<span style="color: #666666; font-style: italic;"># A tvrss script by chochem, a reworking of ughknight's (http://ubuntuforums.org/showthread.php?t=292386&amp;amp;amp;page=2)</span>
<span style="color: #666666; font-style: italic;"># Functions much like ughknights, except that it checks the feed against a list</span>
<span style="color: #666666; font-style: italic;"># of already downloaded torrent files, then gets all the new ones.</span>
<span style="color: #666666; font-style: italic;"># Also added functions are error checking and removing old unused torrent files</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># REQUIRES:</span>
<span style="color: #666666; font-style: italic;"># Text files containing a single feed url from tvrss.net (keep these in the 'tvrssdir' folder)</span>
<span style="color: #666666; font-style: italic;"># &quot;Xmlstarlet&quot; to parse the feed (to get it, enter: &quot;sudo apt-get install xmlstarlet&quot;)</span>
<span style="color: #666666; font-style: italic;"># A torrent client that lets you use a &quot;watch&quot; folder (torrent files in said folder are automatically loaded)</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Please set the two directory variables and the waiting period under 'SETTINGS' to reflect your setup.</span>
<span style="color: #666666; font-style: italic;"># The script will make the directories if they do not already exist.</span>
<span style="color: #666666; font-style: italic;"># Though care has been taken to protect filenames and locations containing spaces, they should</span>
<span style="color: #666666; font-style: italic;"># still be avoided in the directory and feed file names if at all possible.</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># SETTINGS - CUSTOMIZE ACCORDING TO YOUR SETUP</span>
<span style="color: #666666; font-style: italic;"># tvrssdir is the directory in which you put the files containing feed urls (and tvrss keeps its log and temp files)</span>
<span style="color: #007800;">tvrssdir</span>=~<span style="color: #000000; font-weight: bold;">/</span>tvrss
<span style="color: #666666; font-style: italic;"># watchdir is the directory your torrent client checks for new torrents to load automatically</span>
<span style="color: #007800;">watchdir</span>=~<span style="color: #000000; font-weight: bold;">/</span>rtorrentwatch
<span style="color: #666666; font-style: italic;"># waitingperiod is the time in hours between checks for new torrents (accepts decimals, e.g. 0.25 for 15 minutes)</span>
<span style="color: #007800;">waitingperiod</span>=<span style="color: #000000;">1</span>
<span style="color: #666666; font-style: italic;"># maxage is used in a routine that deletes old torrent files from a show subscription. Torrents more than this number of months old gets deleted.</span>
<span style="color: #007800;">maxage</span>=<span style="color: #000000;">1</span>
<span style="color: #666666; font-style: italic;"># END OF SETTINGS</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000;">1</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">do</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-d</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$tvrssdir</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$tvrssdir</span>&quot;</span>; <span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-d</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$watchdir</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$watchdir</span>&quot;</span>; <span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># For-each-tvshow-subscription-do loop starts here</span>
<span style="color: #000000; font-weight: bold;">for</span> tvshow <span style="color: #000000; font-weight: bold;">in</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">${tvrssdir}</span>&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>; <span style="color: #000000; font-weight: bold;">do</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#Setting temporary files and variables</span>
<span style="color: #007800;">newtorrentscount</span>=<span style="color: #000000;">0</span>
<span style="color: #007800;">feedurl</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">${tvrssdir}</span>/<span style="color: #007800;">${tvshow}</span>&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #007800;">tmpxml</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">${tvrssdir}</span>/.tmpxml&quot;</span>
<span style="color: #007800;">oldurllist</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">${tvrssdir}</span>/.<span style="color: #007800;">${tvshow}</span>-oldurllist&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Get the rss feed</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Working on the show <span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #007800;">$tvshow</span><span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Getting the rss feed...&quot;</span>
<span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #660033;">-q</span> <span style="color: #660033;">-O</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$tmpxml</span>&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$feedurl</span>&quot;</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null <span style="color: #000000; font-weight: bold;">&amp;</span>amp;amp;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;amp; <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Feed file downloaded. Parsing file for new torrents...&quot;</span> <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;The feed <span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #007800;">$tvshow</span><span style="color: #000099; font-weight: bold;">\&quot;</span> at <span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #007800;">$feedurl</span><span style="color: #000099; font-weight: bold;">\&quot;</span> could not be downloaded.&quot;</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\r</span>\033[7mCheck the address and/or your connection.\033[0m&quot;</span>; <span style="color: #7a0874; font-weight: bold;">echo</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$tmpxml</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># On condition that wget got hold of a file...</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$tmpxml</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Parse the feed file for torrent links</span>
<span style="color: #c20cb9; font-weight: bold;">touch</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$oldurllist</span>&quot;</span>
<span style="color: #007800;">oldurlstring</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$oldurllist</span>&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #007800;">currenturlstring</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span>xmlstarlet sel <span style="color: #660033;">-t</span> <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;/rss/channel/item/link&quot;</span> <span style="color: #660033;">-v</span> <span style="color: #ff0000;">&quot;concat(.,' ')&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$tmpxml</span>&quot;</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null<span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Check for no results (this covers an empty feed as well as a parsing error)</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-z</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$currenturlstring</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">echo</span>  <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\r</span>\033[7mA file has been downloaded but parsing it resulted in no URLs.\033[0m&quot;</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Either the address in the <span style="color: #007800;">${tvrssdir}</span>/<span style="color: #007800;">${tvshow}</span> file does not refer to a tvrss.net feed or the feed is empty.&quot;</span>; <span style="color: #7a0874; font-weight: bold;">echo</span>
<span style="color: #000000; font-weight: bold;">else</span>
<span style="color: #666666; font-style: italic;"># Check for URLs not in the log (the show's oldurllist), get new ones, add the entry to the log and inform user</span>
<span style="color: #000000; font-weight: bold;">for</span> url <span style="color: #000000; font-weight: bold;">in</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$currenturlstring</span>&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>; <span style="color: #000000; font-weight: bold;">do</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$oldurlstring</span>&quot;</span> =~ <span style="color: #ff0000;">&quot;<span style="color: #007800;">$url</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$url</span> is new. Getting torrent file...&quot;</span>
<span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #660033;">-q</span> <span style="color: #660033;">-O</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">${watchdir}</span>/<span style="color: #007800;">${tvshow}</span>_<span style="color: #007800;">$(date +%y%m%e)</span>_<span style="color: #007800;">$(date +%H%M%S%N)</span>.torrent&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$url</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$url</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$oldurllist</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">let</span> <span style="color: #ff0000;">&quot;newtorrentscount++&quot;</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">done</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Evaluate / user output</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$newtorrentscount</span>&quot;</span> <span style="color: #660033;">-gt</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\r</span>\033[7mFound <span style="color: #007800;">${newtorrentscount}</span> new torrent(s) for <span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #007800;">$tvshow</span><span style="color: #000099; font-weight: bold;">\&quot;</span>\033[0m&quot;</span>; <span style="color: #7a0874; font-weight: bold;">echo</span>
<span style="color: #000000; font-weight: bold;">else</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\r</span>\033[7mNo new torrents for <span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #007800;">$tvshow</span><span style="color: #000099; font-weight: bold;">\&quot;</span>\033[0m&quot;</span>; <span style="color: #7a0874; font-weight: bold;">echo</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># No results condition ends...</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Cleaning up (remove tmpxml)</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$tmpxml</span>&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># wget condition ends...</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Check for old torrent files for this show and remove any older than two months</span>
<span style="color: #007800;">now</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>s<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000; font-weight: bold;">for</span> filename <span style="color: #000000; font-weight: bold;">in</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #800000;">${watchdir}</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #800000;">${tvshow}</span>_<span style="color: #000000; font-weight: bold;">*</span>.torrent <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null<span style="color: #7a0874; font-weight: bold;">&#41;</span>; <span style="color: #000000; font-weight: bold;">do</span>
<span style="color: #007800;">birthday</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>s <span style="color: #660033;">-r</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">${filename}</span>&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #007800;">agesecs</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$now</span>-<span style="color: #007800;">$birthday</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #007800;">agemonths</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$agesecs</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2629743</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$agemonths</span> <span style="color: #660033;">-gt</span> <span style="color: #007800;">$maxage</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Cleaning up old torrent file for <span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #007800;">$tvshow</span><span style="color: #000099; font-weight: bold;">\&quot;</span>...&quot;</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$filename</span>&quot;</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">done</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># For-each-tvshow-subscription-do loop ends...</span>
<span style="color: #000000; font-weight: bold;">done</span>
&nbsp;
<span style="color: #666666; font-style: italic;">########ANTIPOD EDIT#######</span>
<span style="color: #666666; font-style: italic;">#Added this line too to work proper with real Cron.</span>
<span style="color: #7a0874; font-weight: bold;">exit</span>
<span style="color: #666666; font-style: italic;"># Fake cron is the below 2 commands</span>
<span style="color: #666666; font-style: italic;"># I've commented the next 2 strings to make this script run only once,</span>
<span style="color: #666666; font-style: italic;"># because i'm going to use a real cron job and i don't need this loop.</span>
<span style="color: #666666; font-style: italic;"># echo &quot;Sleeping for ${waitingperiod} hour(s)...&quot;</span>
<span style="color: #666666; font-style: italic;"># sleep ${waitingperiod}h</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Neverending loop ends...</span>
<span style="color: #000000; font-weight: bold;">done</span>
<span style="color: #7a0874; font-weight: bold;">exit</span></pre></td></tr></table></div>

<p>Чтобы все это творчество заработало нужен XML-парсер XMLStarlet, ему в свою очередь для жизнедеятельности требуются libxml2, libxslt и libiconv. Ленимся и ставим все это барахло из репозитория</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">yum <span style="color: #c20cb9; font-weight: bold;">install</span> libxml2 libxslt libiconv xmlstarlet</pre></div></div>

<p>В мане по развертыванию скрипта было сказано, что строку 59:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"> <span style="color: #007800;">currenturlstring</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span>xmlstarlet sel <span style="color: #660033;">-t</span> <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;/rss/channel/item/link&quot;</span> <span style="color: #660033;">-v</span> <span style="color: #ff0000;">&quot;concat(.,' ')&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$tmpxml</span>&quot;</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<p>Нужно заменить на:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">currenturlstring</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span>xml sel <span style="color: #660033;">-t</span> <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;/rss/channel/item/link&quot;</span> <span style="color: #660033;">-v</span> <span style="color: #ff0000;">&quot;concat(.,' ')&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$tmpxml</span>&quot;</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<p>Собственно говоря, разница исключительно в команде, которая этот старлет запускает, у автора мана она почему-то была xml, у меня так и была xmlstarlet. Так что нужно тупо тыркнуться в консоль и выяснить на какую кличку этот парсер отзывается.</p>
<p>Что до настройки самого скрипта, то с ним все предельно ясно. Есть четыре переменные, их и редактируем.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># здесть лежат файлы со ссылками на rss-фиды</span>
<span style="color: #007800;">tvrssdir</span>=~<span style="color: #000000; font-weight: bold;">/</span>tvrss
<span style="color: #666666; font-style: italic;"># папка, которая мониторится rtorrent'ом, т.е. туда будут падать новые торренты</span>
<span style="color: #007800;">watchdir</span>=~<span style="color: #000000; font-weight: bold;">/</span>rtorrentwatch
<span style="color: #666666; font-style: italic;"># интервал проверки фидов (можно использовать десятые доли,</span>
<span style="color: #666666; font-style: italic;"># например 0.25 - 15 минут)</span>
<span style="color: #007800;">waitingperiod</span>=<span style="color: #000000;">1</span>
<span style="color: #666666; font-style: italic;"># удаление торрентов старше определенного числа месяцев</span>
<span style="color: #007800;">maxage</span>=<span style="color: #000000;">1</span></pre></div></div>

<p>Плюс в папке <strong>tvrss </strong>текстовые файлы со ссылкой на rss-фид:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># cd /your/tvrss/dir</span>
<span style="color: #666666; font-style: italic;"># echo &quot;url-of-your-feed&quot; &amp;gt; NameOfTheShow</span></pre></div></div>

<p>Сам скрипт я сохранил в <strong>/usr/sbin</strong> и сделал <strong>chmod a+x  /usr/sbin/rss_downloader</strong></p>
<p>Последний штрих &#8211; создание сценария cron, чтоб вся эта ерунда запускалась каждые 10 минут.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>EOF <span style="color: #000000; font-weight: bold;">&gt;&gt;/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>rss_downloader_cron
<span style="color: #007800;">SHELL</span>=<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">bash</span>
<span style="color: #007800;">MAILTO</span>=username
<span style="color: #000000; font-weight: bold;">*/</span><span style="color: #000000;">10</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>rss_downloader
EOF</pre></div></div>

<p>Подсовываю этот сценарий cron&#8217;y:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">crontab <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>rss_downloader_cron</pre></div></div>

<p>Казалось бы, что все хорошо, но есть одна проблема, скрипт парсит фид и выдирает оттуда абсолютно все торренты, то есть никакой фильтрацией и не пахнет. Это конечно не есть хорошо. В очередной раз пойдя на поводу у лени для обработки исходных фидов с трэкеров воспользовался сервисом <a href="http://pipes.yahoo.com" target="_blank">Yahoo Pipes</a>.</p>
<p>Про установку и настройку WebUI напишу в третьей части. Поспать бы&#8230;</p>
<p><a class="a2a_button_livejournal" href="http://www.addtoany.com/add_to/livejournal?linkurl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F16%2Ffile-server-at-home-part-2%2F&amp;linkname=%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%BF%D0%BE%D0%BC%D0%BE%D0%B9%D0%BA%D0%B0.%20%D0%A7%D0%B0%D1%81%D1%82%D1%8C%202." title="LiveJournal" rel="nofollow" target="_blank"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/icons/livejournal.png" width="16" height="16" alt="LiveJournal"/></a><a class="a2a_button_vk" href="http://www.addtoany.com/add_to/vk?linkurl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F16%2Ffile-server-at-home-part-2%2F&amp;linkname=%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%BF%D0%BE%D0%BC%D0%BE%D0%B9%D0%BA%D0%B0.%20%D0%A7%D0%B0%D1%81%D1%82%D1%8C%202." title="Vkontakte" rel="nofollow" target="_blank"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/icons/vk.png" width="16" height="16" alt="Vkontakte"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F16%2Ffile-server-at-home-part-2%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F16%2Ffile-server-at-home-part-2%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F16%2Ffile-server-at-home-part-2%2F&amp;counturl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F16%2Ffile-server-at-home-part-2%2F&amp;count=horizontal&amp;text=%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%BF%D0%BE%D0%BC%D0%BE%D0%B9%D0%BA%D0%B0.%20%D0%A7%D0%B0%D1%81%D1%82%D1%8C%202." scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F16%2Ffile-server-at-home-part-2%2F&amp;counturl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F16%2Ffile-server-at-home-part-2%2F&amp;count=horizontal&amp;text=%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%BF%D0%BE%D0%BC%D0%BE%D0%B9%D0%BA%D0%B0.%20%D0%A7%D0%B0%D1%81%D1%82%D1%8C%202." scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F16%2Ffile-server-at-home-part-2%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F16%2Ffile-server-at-home-part-2%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><!--<![endif]--><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F16%2Ffile-server-at-home-part-2%2F&amp;title=%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%BF%D0%BE%D0%BC%D0%BE%D0%B9%D0%BA%D0%B0.%20%D0%A7%D0%B0%D1%81%D1%82%D1%8C%202." id="wpa2a_16"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.beerhead.ru/blog/2009/12/16/file-server-at-home-part-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Файлопомойка. Часть 1.</title>
		<link>http://www.beerhead.ru/blog/2009/12/14/%d1%84%d0%b0%d0%b9%d0%bb%d0%be%d0%bf%d0%be%d0%bc%d0%be%d0%b9%d0%ba%d0%b0-%d1%87%d0%b0%d1%81%d1%82%d1%8c-1/</link>
		<comments>http://www.beerhead.ru/blog/2009/12/14/%d1%84%d0%b0%d0%b9%d0%bb%d0%be%d0%bf%d0%be%d0%bc%d0%be%d0%b9%d0%ba%d0%b0-%d1%87%d0%b0%d1%81%d1%82%d1%8c-1/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 06:00:24 +0000</pubDate>
		<dc:creator>antipod</dc:creator>
				<category><![CDATA[Красноглазие]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[файл-сервер]]></category>

		<guid isPermaLink="false">http://www.beerhead.ru/blog/?p=818</guid>
		<description><![CDATA[Решил собрать себе небольшой файл-сервер. В качестве операционки остановился на Fedora 12 (никаких веских аргументов в пользу нее у меня нет, просто под руку попался образ для VMWare). Хотелось конечно обойтись малой кровью и установить FreeNAS, но после чтения манов и ЧАВО было установлено, что NTFS она понимает в режиме &#8216;только для чтения&#8217;, что меня [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="chieftec-case" src="http://www.bytesizedreviews.com/arnie/quiet/chieftec.jpg" alt="" width="199" height="295" />Решил собрать себе небольшой файл-сервер. В качестве операционки остановился на Fedora 12 (никаких веских аргументов в пользу нее у меня нет, просто под руку попался образ для VMWare). Хотелось конечно обойтись малой кровью и установить FreeNAS, но после чтения манов и ЧАВО было установлено, что NTFS она понимает в режиме &#8216;только для чтения&#8217;, что меня никак не устраивает, т.к. в наличии уже имеется железный рейд на 2ТБ в системе NTFS и никакого желания конвертировать его в другую файловую систему у меня нет.<br />
Для себя определил следующие требования к будущему файл-серверу:</p>
<ul>
<li>работа с виндовыми шарами</li>
<li>торрент-качалка с WebUI и RSS</li>
<li>фтп-сервер</li>
<li><em>загорелся идеей сделать еще потоковое вещание через VLC<br />
</em></li>
</ul>
<p><span id="more-818"></span></p>
<p>С виндовыми шарами все понятно, никаких альтернатив нет. Нужно ставить Samba. Собирать из исходников не стал, поставил пакет непосредственно из репозитория (<em>yum install samba</em>).</p>
<p><strong>Крик души: &laquo;Будь они прокляты эти виндовые шары!!&raquo; </strong></p>
<p>Вообще с радостью обошелся бы и без них. Они и под виндой то не всегда нормально работают, еще не хватало наживать себе проблемы под линуксом. Единственный аргумент в пользу &#8211; доступ к фильмам, музыке и прочему контенту с основной машины из сети, без необходимости скачивать барахло по фтп.<br />
По предварительным прикидкам много шар мне совсем не нужно, достаточно одной с полным доступом на чтение, запись для гостя. В любом случае сервант будет находиться за роутером и никакого доступа к портам netbios предусмотрено не будет.<br />
Для удобства конфигурирования Samba можно поставить админский веб интерфейс SWAT (<em>yum install samba-swat)</em>.</p>
<p>В итоге после воскуривания манов получился следующий конфиг:</p>
<blockquote><p>[global]<br />
workgroup = ANTIWORLD<br />
server string = Fileserver<br />
bind interfaces only = yes<br />
interfaces = eth0 127.0.0.1 192.168.0.<br />
hosts deny = ALL<br />
hosts allow = 127.0.0.1 192.168.0.<br />
security = SHARE<br />
encrypt passwords = yes<br />
smb passwd file = /etc/samba/smbpasswd<br />
socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192<br />
local master = yes<br />
preferred master = yes<br />
domain master = no<br />
wins support = no<br />
dns proxy = no<br />
guest ok = yes<br />
guest account = nobody<br />
unix charset = utf8<br />
dos charset = cp1251<br />
display charset = cp1251</p>
<p>log file = /var/log/samba/log.smbd<br />
max log size = 100<br />
debug level = 5</p>
<p>[Public]<br />
comment = Public Folder<br />
path = /var/ftp<br />
writable = yes<br />
guest ok = yes<br />
create mask = 0666<br />
directory mask = 0777<br />
read only = no</p></blockquote>
<p>На 100% правильность он, возможно не претендует, но со своей задачей вполне справляется. Samba крутится, шара доступна.<br />
При поднятии Samba столкнулся с единственной проблемой. Сервант пинговался, но доступа к шаре не было, net view сервак не видел. Оказалось, что встроенный фаервол прибивал все пакеты на eth0 кроме пингов. Настроил фаер так, чтобы пропускать все соединения на eth0 и все заиграло. Понятно, что это не секьюрно, но, как уже говорил, помойка будет стоять за роутером.</p>
<p><em>(Продолжение следует&#8230;)</em></p>
<p><a class="a2a_button_livejournal" href="http://www.addtoany.com/add_to/livejournal?linkurl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F14%2F%25d1%2584%25d0%25b0%25d0%25b9%25d0%25bb%25d0%25be%25d0%25bf%25d0%25be%25d0%25bc%25d0%25be%25d0%25b9%25d0%25ba%25d0%25b0-%25d1%2587%25d0%25b0%25d1%2581%25d1%2582%25d1%258c-1%2F&amp;linkname=%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%BF%D0%BE%D0%BC%D0%BE%D0%B9%D0%BA%D0%B0.%20%D0%A7%D0%B0%D1%81%D1%82%D1%8C%201." title="LiveJournal" rel="nofollow" target="_blank"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/icons/livejournal.png" width="16" height="16" alt="LiveJournal"/></a><a class="a2a_button_vk" href="http://www.addtoany.com/add_to/vk?linkurl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F14%2F%25d1%2584%25d0%25b0%25d0%25b9%25d0%25bb%25d0%25be%25d0%25bf%25d0%25be%25d0%25bc%25d0%25be%25d0%25b9%25d0%25ba%25d0%25b0-%25d1%2587%25d0%25b0%25d1%2581%25d1%2582%25d1%258c-1%2F&amp;linkname=%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%BF%D0%BE%D0%BC%D0%BE%D0%B9%D0%BA%D0%B0.%20%D0%A7%D0%B0%D1%81%D1%82%D1%8C%201." title="Vkontakte" rel="nofollow" target="_blank"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/icons/vk.png" width="16" height="16" alt="Vkontakte"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F14%2F%25d1%2584%25d0%25b0%25d0%25b9%25d0%25bb%25d0%25be%25d0%25bf%25d0%25be%25d0%25bc%25d0%25be%25d0%25b9%25d0%25ba%25d0%25b0-%25d1%2587%25d0%25b0%25d1%2581%25d1%2582%25d1%258c-1%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F14%2F%25d1%2584%25d0%25b0%25d0%25b9%25d0%25bb%25d0%25be%25d0%25bf%25d0%25be%25d0%25bc%25d0%25be%25d0%25b9%25d0%25ba%25d0%25b0-%25d1%2587%25d0%25b0%25d1%2581%25d1%2582%25d1%258c-1%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F14%2F%25d1%2584%25d0%25b0%25d0%25b9%25d0%25bb%25d0%25be%25d0%25bf%25d0%25be%25d0%25bc%25d0%25be%25d0%25b9%25d0%25ba%25d0%25b0-%25d1%2587%25d0%25b0%25d1%2581%25d1%2582%25d1%258c-1%2F&amp;counturl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F14%2F%25d1%2584%25d0%25b0%25d0%25b9%25d0%25bb%25d0%25be%25d0%25bf%25d0%25be%25d0%25bc%25d0%25be%25d0%25b9%25d0%25ba%25d0%25b0-%25d1%2587%25d0%25b0%25d1%2581%25d1%2582%25d1%258c-1%2F&amp;count=horizontal&amp;text=%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%BF%D0%BE%D0%BC%D0%BE%D0%B9%D0%BA%D0%B0.%20%D0%A7%D0%B0%D1%81%D1%82%D1%8C%201." scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F14%2F%25d1%2584%25d0%25b0%25d0%25b9%25d0%25bb%25d0%25be%25d0%25bf%25d0%25be%25d0%25bc%25d0%25be%25d0%25b9%25d0%25ba%25d0%25b0-%25d1%2587%25d0%25b0%25d1%2581%25d1%2582%25d1%258c-1%2F&amp;counturl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F14%2F%25d1%2584%25d0%25b0%25d0%25b9%25d0%25bb%25d0%25be%25d0%25bf%25d0%25be%25d0%25bc%25d0%25be%25d0%25b9%25d0%25ba%25d0%25b0-%25d1%2587%25d0%25b0%25d1%2581%25d1%2582%25d1%258c-1%2F&amp;count=horizontal&amp;text=%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%BF%D0%BE%D0%BC%D0%BE%D0%B9%D0%BA%D0%B0.%20%D0%A7%D0%B0%D1%81%D1%82%D1%8C%201." scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F14%2F%25d1%2584%25d0%25b0%25d0%25b9%25d0%25bb%25d0%25be%25d0%25bf%25d0%25be%25d0%25bc%25d0%25be%25d0%25b9%25d0%25ba%25d0%25b0-%25d1%2587%25d0%25b0%25d1%2581%25d1%2582%25d1%258c-1%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F14%2F%25d1%2584%25d0%25b0%25d0%25b9%25d0%25bb%25d0%25be%25d0%25bf%25d0%25be%25d0%25bc%25d0%25be%25d0%25b9%25d0%25ba%25d0%25b0-%25d1%2587%25d0%25b0%25d1%2581%25d1%2582%25d1%258c-1%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><!--<![endif]--><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F12%2F14%2F%25d1%2584%25d0%25b0%25d0%25b9%25d0%25bb%25d0%25be%25d0%25bf%25d0%25be%25d0%25bc%25d0%25be%25d0%25b9%25d0%25ba%25d0%25b0-%25d1%2587%25d0%25b0%25d1%2581%25d1%2582%25d1%258c-1%2F&amp;title=%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%BF%D0%BE%D0%BC%D0%BE%D0%B9%D0%BA%D0%B0.%20%D0%A7%D0%B0%D1%81%D1%82%D1%8C%201." id="wpa2a_18"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.beerhead.ru/blog/2009/12/14/%d1%84%d0%b0%d0%b9%d0%bb%d0%be%d0%bf%d0%be%d0%bc%d0%be%d0%b9%d0%ba%d0%b0-%d1%87%d0%b0%d1%81%d1%82%d1%8c-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Установка Rockbox на Cowon D2</title>
		<link>http://www.beerhead.ru/blog/2009/11/26/rockbox/</link>
		<comments>http://www.beerhead.ru/blog/2009/11/26/rockbox/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 22:15:00 +0000</pubDate>
		<dc:creator>antipod</dc:creator>
				<category><![CDATA[Красноглазие]]></category>
		<category><![CDATA[cowon]]></category>
		<category><![CDATA[музыка]]></category>

		<guid isPermaLink="false">http://www.beerhead.ru/blog/?p=784</guid>
		<description><![CDATA[Решил поставить на свой Cowon D2 альтернативную прошивку Rockbox. Вспомнилось, что недавно была на эту тему статья на Хабре. Сама по себе статья полезна, в плане получения общей информации о Rockbox&#8217;е, фичах и навигации. Но вот сам момент перепрошивки описан как-то сумбурно, да и одна из ссылок не работает уже. В общем ниже подробная инструкция [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="rockbox" src="http://www.rockbox.org/rockbox400.png" alt="" width="303" height="93" />Решил поставить на свой Cowon D2 альтернативную прошивку Rockbox. Вспомнилось, что недавно была на эту тему статья на <a href="http://m.habrahabr.ru/post/74136/" target="_blank"><em>Хабре</em></a>. Сама по себе статья полезна, в плане получения общей информации о Rockbox&#8217;е, фичах и навигации. Но вот сам момент перепрошивки описан как-то сумбурно, да и одна из ссылок не работает уже.</p>
<p>В общем ниже подробная инструкция по установке с рабочими ссылками.</p>
<p><span id="more-784"></span></p>
<p>1. Скачиваем <a title="Список прошивок" href="http://www.cowonrussia.ru/index.php?action=drivers&amp;mode=search&amp;product_id=17" target="_blank">последнюю прошивку</a> для Cowon D2 с офоициального сайта. На момент публикации актуальная версия <a title="Скачать прошивку 2.59" href="http://www.cowonrussia.ru/files/drivers/D2_fw_2_59.php" target="_blank">2.59</a>;</p>
<p>2. Скачиваем <a href="http://download.rockbox.org/bootloader/cowon/d2/bootloader-cowond2.bin">загрузчик</a>, дабы поиметь возможность загружать и с официальной прошивки и с Rockbox&#8217;a;</p>
<p>3. Скачиваем последнюю версию непосредственно самого <a href="http://build.rockbox.org/data/rockbox-cowond2.zip">Rockbox</a>&#8216;a;</p>
<p>4. Извлекаем из архива с официальной прошивкой файл D2N.bin, который лежит в папке 1;</p>
<p>5. Скачиваем утилитку <a href="http://www.beerhead.ru/blog/wp-content/uploads/2009/11/mktccboot.exe">mktccboot</a>, дабы пропатчить официальную прошивку;</p>
<p>6. Сбрасываем ее, файл D2N.bin и bootloader-cowond2.bin в одну папку;</p>
<p>7. Запускаем mktccboot со следующими ключами:</p>
<blockquote><p>mktccboot D2N.bin bootloader-cowond2.bin D2N-patched.bin</p></blockquote>
<p>8. Смело переименовываем D2N-patched.bin в D2N.bin и заливаем этот файл в корневую папку на плеере. Параллельно распаковываем Rockbox в корень карты памяти.</p>
<p><em>Использывание карты памяти &#8211; ключевой момент, так как память плеера доступна прошивке в режиме &#8216;только для чтения&#8217;, а настройки и сейвы сохранять хочется.</em></p>
<p><em>9. Отключаем плеер от компа, включаем, начинается процедура перепрошивки, после которой плеер выключается.</em></p>
<p>Чтобы запустить Rockbox, достаточно в момент включения передвинуть рычажок включения в положение HOLD.</p>
<p>На выходе получаем вполне себе такую интересную прошивку с поддержкой кучи тем, новых форматов (включая трэкерные) (уря, буду слушать музыку с кейгенов), CUE-файлов, чего очень не хватало в оригинальной, поддержку всяческих плагинов и игр (щас допишу это и пойду резаться в Sokoban <img src='http://www.beerhead.ru/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  )</p>
<p>P.S. <span style="text-decoration: line-through;">Еще надо тетрис найти однозначно.</span> Тетрис есть в стандартной поставке!!!</p>
<p><em>Линки в тему:</em></p>
<p><a href="http://www.rockbox.org/" target="_blank">Официальный сайт Rockbox</a> (прошивка поддерживает кучу других плееров разных производителей).<em><br />
</em></p>
<p><a href="http://cowonworld.ru/" target="_blank">Русскоязычное сообщество Cowon</a> и <a href="http://cowonworld.ru/forum/viewforum.php?f=52&amp;sid=7fdf65a34c0fd4b6ac72c7b6e88f43f0">топики про Rockbox на нем</a>.</p>
<p><a href="http://google.com" target="_blank">Google </a>- твой лучший друг.</p>
<p><a class="a2a_button_livejournal" href="http://www.addtoany.com/add_to/livejournal?linkurl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F11%2F26%2Frockbox%2F&amp;linkname=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0%20Rockbox%20%D0%BD%D0%B0%20Cowon%20D2" title="LiveJournal" rel="nofollow" target="_blank"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/icons/livejournal.png" width="16" height="16" alt="LiveJournal"/></a><a class="a2a_button_vk" href="http://www.addtoany.com/add_to/vk?linkurl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F11%2F26%2Frockbox%2F&amp;linkname=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0%20Rockbox%20%D0%BD%D0%B0%20Cowon%20D2" title="Vkontakte" rel="nofollow" target="_blank"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/icons/vk.png" width="16" height="16" alt="Vkontakte"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F11%2F26%2Frockbox%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F11%2F26%2Frockbox%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F11%2F26%2Frockbox%2F&amp;counturl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F11%2F26%2Frockbox%2F&amp;count=horizontal&amp;text=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0%20Rockbox%20%D0%BD%D0%B0%20Cowon%20D2" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F11%2F26%2Frockbox%2F&amp;counturl=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F11%2F26%2Frockbox%2F&amp;count=horizontal&amp;text=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0%20Rockbox%20%D0%BD%D0%B0%20Cowon%20D2" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F11%2F26%2Frockbox%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F11%2F26%2Frockbox%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><!--<![endif]--><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.beerhead.ru%2Fblog%2F2009%2F11%2F26%2Frockbox%2F&amp;title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0%20Rockbox%20%D0%BD%D0%B0%20Cowon%20D2" id="wpa2a_20"><img src="http://www.beerhead.ru/blog/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.beerhead.ru/blog/2009/11/26/rockbox/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

