<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Just another Zexro tape</title>
	<atom:link href="http://schnorrer.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://schnorrer.wordpress.com</link>
	<description>Блог levi</description>
	<lastBuildDate>Thu, 11 Aug 2011 15:56:26 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='schnorrer.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Just another Zexro tape</title>
		<link>http://schnorrer.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://schnorrer.wordpress.com/osd.xml" title="Just another Zexro tape" />
	<atom:link rel='hub' href='http://schnorrer.wordpress.com/?pushpress=hub'/>
		<item>
		<title>[RESOLVED] Серфинг на забитом канале</title>
		<link>http://schnorrer.wordpress.com/2008/08/23/prio2nat/</link>
		<comments>http://schnorrer.wordpress.com/2008/08/23/prio2nat/#comments</comments>
		<pubDate>Sat, 23 Aug 2008 11:35:38 +0000</pubDate>
		<dc:creator>levi</dc:creator>
				<category><![CDATA[admin]]></category>
		<category><![CDATA[IFB]]></category>
		<category><![CDATA[iproute2]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[NAT]]></category>

		<guid isPermaLink="false">http://schnorrer.wordpress.com/?p=36</guid>
		<description><![CDATA[Дано: квартирная сеть: linux-роутер на базе старого PC и несколько рабочих станций; безлимитный интернет с ограничением полосы пропускания; файлы круглосуточно качает роутер; для серфинга используются рабочие станции. Проблема. Роутер занимает весь канал, NAT-трафик не может пробиться к потребителям. Останавливать закачки на время серфинга — простое, но слишком хлопотное решение. Непредвиденные обстоятельства. Разумеется, нужно привлекать iproute2 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schnorrer.wordpress.com&amp;blog=2364382&amp;post=36&amp;subd=schnorrer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Дано:</strong></p>
<ul>
<li> квартирная сеть: linux-роутер на базе старого PC и несколько рабочих станций;</li>
<li>безлимитный интернет с ограничением полосы пропускания;</li>
<li>файлы круглосуточно качает роутер; для серфинга используются рабочие станции.</li>
</ul>
<p><strong>Проблема.</strong><br />
Роутер занимает весь канал, NAT-трафик не может пробиться к потребителям. Останавливать закачки на время серфинга — простое, но слишком хлопотное решение.</p>
<p><strong>Непредвиденные обстоятельства.<br />
</strong>Разумеется, нужно привлекать iproute2 для приоритезации трафика и <a href="http://www.linuxfoundation.org/en/Net:IFB">перенаправлять</a> входящий трафик на псевдоустройство ifb. Однако возникает неожиданное препятствие: трафик, пришедший на ifb успевает классифицироваться до того, как пройдет через правила iptables. Таким образом, с помощью iptables невозможно выделить NAT-трафик и пометить пакеты до классификации на ifb. Средствами же iproute нельзя задать фильтр, который может узнать по ip_conntrack, является ли роутер окончательным адресатом пакета или он будет обработан NAT-ом и передан в локальную сеть.<br />
<strong></strong></p>
<p><strong>Решение.<br />
</strong>При маскарадинге пакетов можно явно задать диапазон портов, которыми будут заменяться оригинальные dport. Этим можно воспользоваться для отличения NATed-пакетов от обычных, попадающих в INPUT. Так, можно задать достаточно высокий диапазон портов для NAT:</p>
<p><code>$IPTABLES -t nat -A POSTROUTING -o $PPP_IFACE -p TCP -j MASQUERADE \<br />
--to-ports 16384-65535<br />
$IPTABLES -t nat -A POSTROUTING -o $PPP_IFACE -p UDP -j MASQUERADE \<br />
--to-ports 16384-65535<br />
$IPTABLES -t nat -A POSTROUTING -o $PPP_IFACE -j MASQUERADE</code></p>
<p>Обычные (не NAT) пакеты с большой вероятностью будут иметь порт назначения ниже отметки 16384.<br />
Классифицировать входящие пакеты по dport не составляет труда (классификатор u32).</p>
<p>P.S. Полные скрипты из работающей конфигурации могут быть выложены при наличии интереса к теме.</p>
<p><strong>UPD.</strong> Залил <a href="http://www.box.net/shared/6kxoe5zn99">архив</a> со скриптами и конфигами (все файлы из Debian Lenny, поэтому пути к ним соответствующие):</p>
<ol>
<li>/etc/init.d/priotraff — поднимает IFB-интерфейс при старте системы (не забудьте про update-rc.d).</li>
<li>/etc/ppp/peers/dsl-provider — настройки PPP-соединения, нас интересует только имя провайдера в последней строчке, «my-isp».</li>
<li>/etc/ppp/ip-up — интересны последние три строки: скрипт будет запущен, если имя PPP-соединения «my-isp».</li>
<li>/etc/ppp/ip-up.d/add-ppp-ingress — собственно скрипт, настраивающий приоритезацию.</li>
</ol>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/schnorrer.wordpress.com/36/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/schnorrer.wordpress.com/36/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/schnorrer.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/schnorrer.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/schnorrer.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/schnorrer.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/schnorrer.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/schnorrer.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/schnorrer.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/schnorrer.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/schnorrer.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/schnorrer.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/schnorrer.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/schnorrer.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/schnorrer.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/schnorrer.wordpress.com/36/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schnorrer.wordpress.com&amp;blog=2364382&amp;post=36&amp;subd=schnorrer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://schnorrer.wordpress.com/2008/08/23/prio2nat/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ae28979a330ff1f5cab9f666e3113715?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">levi</media:title>
		</media:content>
	</item>
		<item>
		<title>Аццкий конструктор IPSec</title>
		<link>http://schnorrer.wordpress.com/2008/02/13/l2tp-vpn/</link>
		<comments>http://schnorrer.wordpress.com/2008/02/13/l2tp-vpn/#comments</comments>
		<pubDate>Wed, 13 Feb 2008 05:03:34 +0000</pubDate>
		<dc:creator>levi</dc:creator>
				<category><![CDATA[admin]]></category>
		<category><![CDATA[ipsec]]></category>
		<category><![CDATA[l2tp]]></category>
		<category><![CDATA[openswan]]></category>

		<guid isPermaLink="false">http://schnorrer.wordpress.com/?p=22</guid>
		<description><![CDATA[До настройки OpenSwan я думал, что имею представление о Linux-шаманстве. Но это чудо, усыпанное независимыми ручками настройки, тумблерочками и кнопочками, бьет все рекорды. И, что характерно для подобных продуктов, уже отлаженный, рабочий конфиг выглядит настолько очевидным и логичным, что поневоле удивляешься: с чем там можно было бороться столько дней подряд? Но все закончилось хорошо. IPSec [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schnorrer.wordpress.com&amp;blog=2364382&amp;post=22&amp;subd=schnorrer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>До настройки OpenSwan я думал, что имею представление о Linux-шаманстве. Но это чудо, усыпанное независимыми ручками настройки, тумблерочками и кнопочками, бьет все рекорды. И, что характерно для подобных продуктов, уже отлаженный, рабочий конфиг выглядит настолько очевидным и логичным, что поневоле удивляешься: с чем там можно было бороться столько дней подряд?</p>
<p>Но все закончилось хорошо. IPSec с сертификатами и L2TP-туннель заработали, офисная сеть открылась избранным (<i>roadwarriors</i>).</p>
<p>P.S. Почему у l2tpns нельзя указать локальный IP и как это хозяйство роутить — осталось загадкой. Пришлось ставить обратно l2tpd.</p>
<p><b>UPD:</b> Судя по рейтингам поста, людей интересует сам конфиг. Исправляю упущение.</p>
<p>Задача: открыть доступ к ресурсам корпоративной сети для сотрудников, которые находятся дома или в командировке.</p>
<p>Подзадача: создать безопасный канал связи между роутером корпоративной сети (внешний адрес, для определенности, 80.80.80.219/29) и компьютером сотрудника.</p>
<p>Листинг /etc/ipsec.conf:</p>
<p><pre class="brush: cpp;">
version 2.0

config setup
        nat_traversal=yes                    # для тех, кто за NAT-ом
        interfaces=%defaultroute
        virtual_private=%v4:80.80.80.216/29  # подсеть, в которую входит наш секурный хост

conn %default
        keyingtries=1
        compress=yes
        disablearrivalcheck=no
        authby=rsasig
        leftrsasigkey=%cert
        rightrsasigkey=%cert

conn roadwarrior-l2tp                   # имя соединения произвольное, т.к. соединение
                                        # выбирается опенсваном по параметрам
        left=80.80.80.219               # должен быть в virtual_private
        leftnexthop=80.80.80.217        # инет-роутер подсети
        leftcert=mydomain.ru.pem        # сертификат должен лежать в /etc/ipsec.d/certs
        leftprotoport=17/1701
        right=%any                      # принимаем соединения с любого адреса
        rightsubnet=vhost:%no,%priv
        rightprotoport=17/1701
        pfs=no
        auto=add
        type=transport

include /etc/ipsec.d/examples/no_oe.conf

conn block
        auto=ignore

conn private-or-clear
        auto=ignore

conn clear-or-private
        auto=ignore

conn clear
        auto=ignore

conn packetdefault
        auto=ignore</pre><br />
P. P. S. OpenSwan ничего не знает ни о настройках L2TP, ни о топологии внутренней подсети, к которой предполагается открыть доступ через VPN. Подобные тонкости не фигурируют в ipsec.conf. Применительно к L2TP, задача IPSec только в создании безопасного транспорта между двумя хостами.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/schnorrer.wordpress.com/22/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/schnorrer.wordpress.com/22/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/schnorrer.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/schnorrer.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/schnorrer.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/schnorrer.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/schnorrer.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/schnorrer.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/schnorrer.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/schnorrer.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/schnorrer.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/schnorrer.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/schnorrer.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/schnorrer.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/schnorrer.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/schnorrer.wordpress.com/22/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schnorrer.wordpress.com&amp;blog=2364382&amp;post=22&amp;subd=schnorrer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://schnorrer.wordpress.com/2008/02/13/l2tp-vpn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ae28979a330ff1f5cab9f666e3113715?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">levi</media:title>
		</media:content>
	</item>
		<item>
		<title>Бубном по Active Directory</title>
		<link>http://schnorrer.wordpress.com/2008/01/16/%d0%91%d1%83%d0%b1%d0%bd%d0%be%d0%bc-%d0%bf%d0%be-active-directory/</link>
		<comments>http://schnorrer.wordpress.com/2008/01/16/%d0%91%d1%83%d0%b1%d0%bd%d0%be%d0%bc-%d0%bf%d0%be-active-directory/#comments</comments>
		<pubDate>Wed, 16 Jan 2008 10:48:35 +0000</pubDate>
		<dc:creator>levi</dc:creator>
				<category><![CDATA[admin]]></category>
		<category><![CDATA[AD]]></category>
		<category><![CDATA[troubleshooting]]></category>

		<guid isPermaLink="false">http://schnorrer.wordpress.com/2008/01/16/%d0%91%d1%83%d0%b1%d0%bd%d0%be%d0%bc-%d0%bf%d0%be-active-directory/</guid>
		<description><![CDATA[Legacy-контроллеры домена снова обрадовали неведомыми глюками. Сегодня — отказом службы репликации файлов. Нечеловеческими усилиями удалось найти рецепт, который помог. Краткое изложение оригинала: 1) выбираем контроллер, который инициирует процесс; 2) идем в HKLM\SYSTEM\CurrentControlSet\Services\NtFrs\Parameters\Backup/Restore\Process at Startup, меняем значение BurFlags на «d4». 3) грохаем содержимое C:\WINDOWS\SYSVOL\domain\NtFrs_PreExisting___See_EventLog 4) перезапускаем службу репликации («net stop ntfrs», «net start ntfrs»). Убеждаемся, что [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schnorrer.wordpress.com&amp;blog=2364382&amp;post=16&amp;subd=schnorrer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Legacy-контроллеры домена снова обрадовали неведомыми глюками. Сегодня — отказом службы репликации файлов. Нечеловеческими усилиями удалось найти рецепт, который помог. Краткое изложение <a href="http://support.microsoft.com/kb/316790" title="The Sysvol and Netlogon Shares Are Missing After You Restore a Domain Controller from Backup">оригинала</a>:</p>
<p>1) выбираем контроллер, который инициирует процесс;<br />
2) идем в <b>HKLM\SYSTEM\CurrentControlSet\Services\NtFrs\Parameters\Backup/Restore\Process at Startup</b>, меняем значение <b>BurFlags</b> на «d4».<br />
3) грохаем содержимое <b>C:\WINDOWS\SYSVOL\domain\NtFrs_PreExisting___See_EventLog</b><br />
4) перезапускаем службу репликации (<b>«net stop ntfrs»</b>, <b>«net start ntfrs»</b>).</p>
<p>Убеждаемся, что в журнале событий отразились изменения к лучшему. Можно проверить работоспособность контроллеров с помощью <b>dcdiag</b>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/schnorrer.wordpress.com/16/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/schnorrer.wordpress.com/16/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/schnorrer.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/schnorrer.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/schnorrer.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/schnorrer.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/schnorrer.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/schnorrer.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/schnorrer.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/schnorrer.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/schnorrer.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/schnorrer.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/schnorrer.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/schnorrer.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/schnorrer.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/schnorrer.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schnorrer.wordpress.com&amp;blog=2364382&amp;post=16&amp;subd=schnorrer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://schnorrer.wordpress.com/2008/01/16/%d0%91%d1%83%d0%b1%d0%bd%d0%be%d0%bc-%d0%bf%d0%be-active-directory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ae28979a330ff1f5cab9f666e3113715?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">levi</media:title>
		</media:content>
	</item>
		<item>
		<title>Кабельный превед</title>
		<link>http://schnorrer.wordpress.com/2007/12/26/%d0%9a%d0%b0%d0%b1%d0%b5%d0%bb%d1%8c%d0%bd%d1%8b%d0%b9-%d0%bf%d1%80%d0%b5%d0%b2%d0%b5%d0%b4/</link>
		<comments>http://schnorrer.wordpress.com/2007/12/26/%d0%9a%d0%b0%d0%b1%d0%b5%d0%bb%d1%8c%d0%bd%d1%8b%d0%b9-%d0%bf%d1%80%d0%b5%d0%b2%d0%b5%d0%b4/#comments</comments>
		<pubDate>Wed, 26 Dec 2007 18:06:34 +0000</pubDate>
		<dc:creator>levi</dc:creator>
				<category><![CDATA[funny]]></category>
		<category><![CDATA[preved]]></category>
		<category><![CDATA[tv]]></category>

		<guid isPermaLink="false">http://schnorrer.wordpress.com/2007/12/26/%d0%9a%d0%b0%d0%b1%d0%b5%d0%bb%d1%8c%d0%bd%d1%8b%d0%b9-%d0%bf%d1%80%d0%b5%d0%b2%d0%b5%d0%b4/</guid>
		<description><![CDATA[Оператор кабельного ТВ балуется. Снято на телефон.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schnorrer.wordpress.com&amp;blog=2364382&amp;post=11&amp;subd=schnorrer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Оператор кабельного ТВ балуется. Снято на телефон.</p>
<p><img src="http://farm3.static.flickr.com/2103/2000850442_c7bbf79113.jpg" alt="TV-preved" border="0" height="375" width="500" /></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/schnorrer.wordpress.com/11/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/schnorrer.wordpress.com/11/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/schnorrer.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/schnorrer.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/schnorrer.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/schnorrer.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/schnorrer.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/schnorrer.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/schnorrer.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/schnorrer.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/schnorrer.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/schnorrer.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/schnorrer.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/schnorrer.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/schnorrer.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/schnorrer.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schnorrer.wordpress.com&amp;blog=2364382&amp;post=11&amp;subd=schnorrer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://schnorrer.wordpress.com/2007/12/26/%d0%9a%d0%b0%d0%b1%d0%b5%d0%bb%d1%8c%d0%bd%d1%8b%d0%b9-%d0%bf%d1%80%d0%b5%d0%b2%d0%b5%d0%b4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ae28979a330ff1f5cab9f666e3113715?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">levi</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2103/2000850442_c7bbf79113.jpg" medium="image">
			<media:title type="html">TV-preved</media:title>
		</media:content>
	</item>
		<item>
		<title>Модуль аутентификации к Jetty</title>
		<link>http://schnorrer.wordpress.com/2007/12/26/%d0%9c%d0%be%d0%b4%d1%83%d0%bb%d1%8c-%d0%b0%d1%83%d1%82%d0%b5%d0%bd%d1%82%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%86%d0%b8%d0%b8-%d0%ba-jetty/</link>
		<comments>http://schnorrer.wordpress.com/2007/12/26/%d0%9c%d0%be%d0%b4%d1%83%d0%bb%d1%8c-%d0%b0%d1%83%d1%82%d0%b5%d0%bd%d1%82%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%86%d0%b8%d0%b8-%d0%ba-jetty/#comments</comments>
		<pubDate>Wed, 26 Dec 2007 17:19:44 +0000</pubDate>
		<dc:creator>levi</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[jaas]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jetty]]></category>

		<guid isPermaLink="false">http://schnorrer.wordpress.com/2007/12/26/%d0%9c%d0%be%d0%b4%d1%83%d0%bb%d1%8c-%d0%b0%d1%83%d1%82%d0%b5%d0%bd%d1%82%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%86%d0%b8%d0%b8-%d0%ba-jetty/</guid>
		<description><![CDATA[Для написания своего Login Module документация по JAAS в Jetty отправляет к соответствующим исходникам и намекает, что нужно всего лишь накодировать метод getUserInfo. Это чистая правда, но пока врубишься что к чему, Jetty наплюет не один килобайт логов с ошибками. Итак, что получилось: То есть, нужно из своего супер-секретного-хранилища юзерских аккаунтов, где бы оно ни [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schnorrer.wordpress.com&amp;blog=2364382&amp;post=10&amp;subd=schnorrer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Для написания своего Login Module <a href="http://docs.codehaus.org/display/JETTY/JAAS" title="Jetty JAAS" target="_blank">документация по JAAS в Jetty</a> отправляет к соответствующим исходникам и намекает, что нужно всего лишь накодировать метод getUserInfo. Это чистая правда, но пока врубишься что к чему, Jetty наплюет не один килобайт логов с ошибками. Итак, что получилось:</p>
<p><pre class="brush: java;">
package levi.ainv;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.mortbay.jetty.plus.jaas.spi.AbstractLoginModule;
import org.mortbay.jetty.plus.jaas.spi.UserInfo;
import org.mortbay.jetty.security.Credential;

public class DBLoginModule extends AbstractLoginModule {
   @Override
   public UserInfo getUserInfo(String userName) throws Exception {
       // в моем случае используется Singleton-объект Engine,
       // который хранит хэшмап с юзерами
       User user = Engine.itself().selectUser(userName);

       // на нет и суда нет
       if(user == null) {
           return null;
       }

       // заливаем роли в список
       List&lt;String&gt; roles = new ArrayList&lt;String&gt;();
       Iterator&lt;Role&gt; userRoles = user.getRoles().iterator();
       while(userRoles.hasNext()) {
           roles.add(userRoles.next().getName());
       }

       // ключевой момент - возвращаем имя юзера,
       // креденшл, изготовленный из простого строкового пароля, и список с ролями --
       // дальше родительский класс сам сравнит пароли и роли,
       // которые мы предоставили для заданного имени юзера и решит
       // пущать или не пущать
       return new UserInfo(userName, Credential.getCredential(user.getPassword()), roles);
   }
}</pre><br />
То есть, нужно из своего супер-секретного-хранилища юзерских аккаунтов, где бы оно ни было, вытащить аккаунт с заданным именем, запаковать в объект UserInfo и return его. Больше ни о чем думать не требуется.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/schnorrer.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/schnorrer.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/schnorrer.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/schnorrer.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/schnorrer.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/schnorrer.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/schnorrer.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/schnorrer.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/schnorrer.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/schnorrer.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/schnorrer.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/schnorrer.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/schnorrer.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/schnorrer.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/schnorrer.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/schnorrer.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schnorrer.wordpress.com&amp;blog=2364382&amp;post=10&amp;subd=schnorrer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://schnorrer.wordpress.com/2007/12/26/%d0%9c%d0%be%d0%b4%d1%83%d0%bb%d1%8c-%d0%b0%d1%83%d1%82%d0%b5%d0%bd%d1%82%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%86%d0%b8%d0%b8-%d0%ba-jetty/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ae28979a330ff1f5cab9f666e3113715?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">levi</media:title>
		</media:content>
	</item>
		<item>
		<title>Кўсо живо</title>
		<link>http://schnorrer.wordpress.com/2007/12/21/%d0%9a%d1%9e%d1%81%d0%be-%d0%b6%d0%b8%d0%b2%d0%be/</link>
		<comments>http://schnorrer.wordpress.com/2007/12/21/%d0%9a%d1%9e%d1%81%d0%be-%d0%b6%d0%b8%d0%b2%d0%be/#comments</comments>
		<pubDate>Fri, 21 Dec 2007 09:18:15 +0000</pubDate>
		<dc:creator>levi</dc:creator>
				<category><![CDATA[funny]]></category>
		<category><![CDATA[kanji]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://schnorrer.wordpress.com/2007/12/21/%d0%9a%d1%9e%d1%81%d0%be-%d0%b6%d0%b8%d0%b2%d0%be/</guid>
		<description><![CDATA[Поисковик по Unicode-символам убедительно доказал, что „устаревший“ иероглиф для японского слова «kŭso» (в перев. на англ. «shit») живее всех живых. Вуаля: 糞 Вполне потребно им ругаться. К примеру: — 糞! Опять netsplit!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schnorrer.wordpress.com&amp;blog=2364382&amp;post=3&amp;subd=schnorrer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.fileformat.info/info/unicode/char/search.htm" title="Unicode Character Search">Поисковик</a> по Unicode-символам убедительно доказал, что „устаревший“ иероглиф для японского слова «kŭso» (в перев. на англ. «shit») живее всех живых.  Вуаля:</p>
<p style="font-size:38pt;">糞</p>
<p> Вполне потребно им ругаться. К примеру:</p>
<p>— 糞! Опять netsplit!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/schnorrer.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/schnorrer.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/schnorrer.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/schnorrer.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/schnorrer.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/schnorrer.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/schnorrer.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/schnorrer.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/schnorrer.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/schnorrer.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/schnorrer.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/schnorrer.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/schnorrer.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/schnorrer.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/schnorrer.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/schnorrer.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schnorrer.wordpress.com&amp;blog=2364382&amp;post=3&amp;subd=schnorrer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://schnorrer.wordpress.com/2007/12/21/%d0%9a%d1%9e%d1%81%d0%be-%d0%b6%d0%b8%d0%b2%d0%be/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ae28979a330ff1f5cab9f666e3113715?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">levi</media:title>
		</media:content>
	</item>
	</channel>
</rss>
