<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>systemBash</title>
	
	<link>http://systembash.com</link>
	<description>Technology and System Administration</description>
	<lastBuildDate>Thu, 09 May 2013 21:30:02 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/systembash" /><feedburner:info uri="systembash" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>39.978456</geo:lat><geo:long>-75.822755</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><feedburner:emailServiceId>systembash</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsystembash" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsystembash" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsystembash" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/systembash" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsystembash" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fsystembash" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsystembash" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fsystembash" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsystembash" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><item>
		<title>How to Turn PHP into an RPM The Easy Way with FPM</title>
		<link>http://feedproxy.google.com/~r/systembash/~3/Gm_AgsOSXfw/</link>
		<comments>http://systembash.com/content/how-to-turn-php-into-an-rpm-the-easy-way-with-fpm/#comments</comments>
		<pubDate>Thu, 09 May 2013 21:27:02 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programs]]></category>
		<category><![CDATA[Shell]]></category>
		<category><![CDATA[System Administration]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[rpm]]></category>

		<guid isPermaLink="false">http://systembash.com/?p=1341</guid>
		<description><![CDATA[<p>So you have a custom PHP binary that you wish to distribute across multiple servers. </p>
<p>The &#8220;old&#8221; way to do this is to create a bash script in order to pull down the source code, run ./configure and then make; make install. But this is 2013, we have a much more civilized way to create this package now, so that you can distribute that RPM across multiple nodes or even include it in your own yum repository. </p>
<p>We&#8217;re going to use FPM (Effing Package Manager) to do the job for this. It is a little bit confusing because PHP also includes the acronym FPM  for FastCGI Process Manager. Our package manager FPM is a ruby gem, so install the prerequisites first (CentOS 6 directions here), along with fpm:</p>
12# yum install ruby ruby-devel rubygems
# gem install fpm
<p>To start, compile PHP ...]]></description>
				<content:encoded><![CDATA[<p>So you have a custom PHP binary that you wish to distribute across multiple servers. </p>
<p>The &#8220;old&#8221; way to do this is to create a bash script in order to pull down the source code, run <code class="codecolorer text mac-classic codecolorer"><span class="text">./configure</span></code> and then <code class="codecolorer text mac-classic codecolorer"><span class="text">make; make install</span></code>. But this is 2013, we have a much more civilized way to create this package now, so that you can distribute that RPM across multiple nodes or even include it in your own yum repository. </p>
<p>We&#8217;re going to use <a href="https://github.com/jordansissel/fpm">FPM</a> (<a href="https://github.com/jordansissel/fpm">Effing Package Manager</a>) to do the job for this. It is a little bit confusing because PHP also includes the acronym FPM  for <a href="http://php-fpm.org/">FastCGI Process Manager</a>. Our package manager FPM is a ruby gem, so install the prerequisites first (<a href="https://www.digitalocean.com/community/articles/how-to-install-ruby-on-rails-on-centos-6">CentOS 6 directions here</a>), along with fpm:</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># yum install ruby ruby-devel rubygems<br />
# gem install fpm</div></td></tr></tbody></table></div>
<p>To start, compile PHP the way you normally would, ie:</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">'./configure' &nbsp;'--program-prefix=' '--prefix=/usr' \<br />
'--exec-prefix=/usr' '--bindir=/usr/bin' '--enable-ftp' \<br />
'--enable-calendar' '--with-libxml-dir=/usr' '--enable-mbstring' \<br />
'--enable-mbregex' '--with-gd' '--enable-zip' '--with-mcrypt' \<br />
'--with-mhash' '--with-libdir=lib64' '--enable-fpm' '--with-fpm-user=www' \<br />
'--with-fpm-group=www' '--with-mysql=mysqlnd' '--with-mysqli=mysqlnd'</div></td></tr></tbody></table></div>
<p>Then <code class="codecolorer text mac-classic codecolorer"><span class="text">make</span></code> it as normal.</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># make<br />
... Lots of output</div></td></tr></tbody></table></div>
<p>Now instead of running <code class="codecolorer text mac-classic codecolorer"><span class="text">make install</span></code> like normal, we tell it to output to another directory, just some temporary directory on the server:</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">make install INSTALL_ROOT=/tmp/installdir<br />
Installing PHP SAPI module: &nbsp; &nbsp; &nbsp; fpm<br />
Installing PHP CLI binary: &nbsp; &nbsp; &nbsp; &nbsp;/tmp/installdir/usr/bin/<br />
Installing PHP CLI man page: &nbsp; &nbsp; &nbsp;/tmp/installdir/usr/share/man/man1/<br />
Installing PHP FPM binary: &nbsp; &nbsp; &nbsp; &nbsp;/tmp/installdir/usr/sbin/<br />
Installing PHP FPM config: &nbsp; &nbsp; &nbsp; &nbsp;/tmp/installdir/etc/<br />
Installing PHP FPM man page: &nbsp; &nbsp; &nbsp;/tmp/installdir/usr/share/man/man8/<br />
Installing PHP FPM status page: &nbsp; &nbsp; &nbsp;/tmp/installdir/usr/share/fpm/<br />
Installing build environment: &nbsp; &nbsp; /tmp/installdir/usr/lib/build/<br />
Installing header files: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/tmp/installdir/usr/include/php/<br />
Installing helper programs: &nbsp; &nbsp; &nbsp; /tmp/installdir/usr/bin/<br />
&nbsp; program: phpize<br />
&nbsp; program: php-config<br />
Installing man pages: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /tmp/installdir/usr/share/man/man1/<br />
&nbsp; page: phpize.1<br />
&nbsp; page: php-config.1<br />
/usr/local/src/php-5.3.25/build/shtool install -c ext/phar/phar.phar /tmp/installdir/usr/bin<br />
ln -s -f /usr/bin/phar.phar /tmp/installdir/usr/bin/phar<br />
Installing PDO headers: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/tmp/installdir/usr/include/php/ext/pdo/</div></td></tr></tbody></table></div>
<p>Now PHP is happily installed in /tmp/installdir. Which is great, but we can&#8217;t use it until it we package it up for regular installation. Run the FPM command to pack it all up:</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># fpm -s dir -t rpm -n php-fpm -v 5.3.25 -C /tmp/installdir \<br />
&nbsp; &nbsp;-p php-fpm_VERSION_ARCH.rpm -d openssl -d pcre -d bzip2 -d curl \<br />
&nbsp; &nbsp;-d libjpeg -d libpng -d freetype -d gmp -d libmcrypt -d libmhash \<br />
&nbsp; &nbsp;-d libxml2 usr/bin usr/share/man/man1 usr/sbin etc \<br />
&nbsp; &nbsp;usr/share/man/man8 usr/share/fpm usr/lib/build usr/include/php</div></td></tr></tbody></table></div>
<h3>What do the options mean?</h3>
<p>I&#8217;ll go through these options:</p>
<ul>
<li>-s dir: source is a directory</li>
<li>-t rpm: we are creating an rpm</li>
<li>-n php-fpm: we are creating a package with the name php-fpm</li>
<li>-v 5.3.25: the version of the rpm (so you can manage upgrades)</li>
<li>-C /tmp/installdir: the base location to take the files from</li>
<li>-p php-fpm_VERSION_ARCH.rpm: fpm will replace the VERSION and ARCH macros automatically with your version number and architecture</li>
<li>-d openssl -s pcre &#8230;: these are all of the rpm dependencies that you&#8217;ll want on the machines installing the package. If you don&#8217;t include the proper ones (to match your source system, and which are included in ./configure, you&#8217;ll get library errors when you try to launch the program.</li>
<li>usr/bin usr/share/man/man1 usr/sbin etc usr/share/man/man8 usr/share/fpm usr/lib/build usr/include/php: the directories you wish to include in your package file</li>
</ul>
<p>When all is done, you should have your rpm file located in /tmp/installdir. You can install it directly on any system with <code class="codecolorer text mac-classic codecolorer"><span class="text">rpm -i &lt;rpm name&gt;</span></code></p>
<p>Before you package up your files, you can include any other files you want. For example, you could include the init script or php.ini file. But if you are managing the system using puppet or chef, it would be better to manage this configuration file through there rather than from the rpm file. This works really well as a &#8216;building block&#8217; for your programs when you add these custom rpms into your own repository. That way, you can have your system install custom versions of the binaries where applicable but still have the niceties that come from an systems automation with puppet or chef. </p>
<p>Enjoy!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/systembash?a=Gm_AgsOSXfw:tdtrydeIvXY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/systembash?i=Gm_AgsOSXfw:tdtrydeIvXY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=Gm_AgsOSXfw:tdtrydeIvXY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/systembash?i=Gm_AgsOSXfw:tdtrydeIvXY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=Gm_AgsOSXfw:tdtrydeIvXY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/systembash?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=Gm_AgsOSXfw:tdtrydeIvXY:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/systembash?i=Gm_AgsOSXfw:tdtrydeIvXY:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=Gm_AgsOSXfw:tdtrydeIvXY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/systembash?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/systembash/~4/Gm_AgsOSXfw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://systembash.com/content/how-to-turn-php-into-an-rpm-the-easy-way-with-fpm/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://systembash.com/content/how-to-turn-php-into-an-rpm-the-easy-way-with-fpm/</feedburner:origLink></item>
		<item>
		<title>Simple Guide To Signing RPMs with FPM</title>
		<link>http://feedproxy.google.com/~r/systembash/~3/FsGRY7JEHgo/</link>
		<comments>http://systembash.com/content/simple-guide-to-signing-rpms-with-fpm/#comments</comments>
		<pubDate>Wed, 24 Apr 2013 18:43:14 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Shell]]></category>
		<category><![CDATA[System Administration]]></category>

		<guid isPermaLink="false">http://systembash.com/?p=1334</guid>
		<description><![CDATA[<p>I&#8217;ve been using the excellent fpm (Effing package manager!) tool for automatically generating rpms from source (for example, creating a custom compiled php-fpm binary and then wrapping it for install in an rpm for distribution from our own repository). FPM also creates .debs and other binaries as you need them. </p>
<p>To ensure we have a secure infrastructure we wanted to make sure that the rpms are correctly signed so that the gpg check can be completed on them when installed. </p>
<p>First, generate the gpg public/private key pair:</p>
1gpg --gen-key
<p>Fill out the required information. The entropy generation step may take a long time to complete. </p>
<p>Export a text version of the public key with this command, for later use in your repository:</p>
1gpg --export -a 'Dave Drager' &#62; ~/RPM-GPG-KEY-reponame
<p>fpm docs state that you just need to add the &#8211;rpm-sign to your fpm command. ...]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been using the excellent <a href="https://github.com/jordansissel/fpm">fpm</a> (Effing package manager!) tool for automatically generating rpms from source (for example, creating a custom compiled php-fpm binary and then wrapping it for install in an rpm for distribution from our own repository). FPM also creates .debs and other binaries as you need them. </p>
<p>To ensure we have a secure infrastructure we wanted to make sure that the rpms are correctly signed so that the gpg check can be completed on them when installed. </p>
<p>First, generate the gpg public/private key pair:</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">gpg --gen-key</div></td></tr></tbody></table></div>
<p>Fill out the required information. The entropy generation step may take a long time to complete. </p>
<p>Export a text version of the public key with this command, for later use in your repository:</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">gpg --export -a 'Dave Drager' &gt; ~/RPM-GPG-KEY-reponame</div></td></tr></tbody></table></div>
<p>fpm docs state that you just need to add the &#8211;rpm-sign to your fpm command. However, this generated the following error for me:</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">error: You must set &quot;%_gpg_name&quot; in your macro file {:level=&gt;:error}<br />
Pass phrase check failed {:level=&gt;:error}</div></td></tr></tbody></table></div>
<p>The reason for this is that it uses the settings located in your ~/.rpmmacros file. Find your key ID:</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># gpg --list-keys<br />
/user/.gnupg/pubring.gpg<br />
------------------------<br />
pub &nbsp; 2048R/94E8C1F6 2013-04-24<br />
uid &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Dave Drager &lt;ddrager@xxx&gt;<br />
sub &nbsp; 2048R/94E8C1F6 2013-04-24</div></td></tr></tbody></table></div>
<p>In this sample, the KEY_ID would be &#8220;94E8C1F6&#8243;</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">%_signature gpg<br />
%_gpg_path /path/to/.gnupg<br />
%_gpg_name KEY_ID<br />
%_gpgbin /usr/bin/gpg</div></td></tr></tbody></table></div>
<p>From here, the fpm command runs without issue.</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># fpm -s dir -t rpm -n php-fpm-xda -v 5.2.23 -C /tmp/installdir -p php-fpm-xda_VERSION_ARCH.rpm -d openssl -d pcre -d bzip2 -d curl -d libjpeg -d libpng -d freetype -d gmp -d libmcrypt -d libmhash -d libxml2 --rpm-sign usr/bin usr/share/man/man1 usr/sbin etc usr/share/man/man8 usr/share/fpm usr/lib/build usr/include/php<br />
Enter pass phrase: <br />
Pass phrase is good. {:level=&gt;:error}<br />
Created rpm {:path=&gt;&quot;php-fpm-xda_5.2.23_x86_64.rpm&quot;}</div></td></tr></tbody></table></div>
<p>This is an alias of the <code class="codecolorer text mac-classic codecolorer"><span class="text">rpm --addsign</span></code> command. </p>
<p>Now let&#8217;s check the signature on this rpm.</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># rpm --checksig php-fpm-xda_5.2.23_x86_64.rpm <br />
php-fpm-xda_5.2.23_x86_64.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#94E8C1F6)</div></td></tr></tbody></table></div>
<p>Whoops, it doesn&#8217;t seem to be signed properly. Well, that is because the rpm system doesn&#8217;t know to trust this GPG key yet. Import with the following command:</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">rpm --import ~/RPM-GPG-KEY-reponame</div></td></tr></tbody></table></div>
<p>Note that this is the plain text file from before. Your RPM system knows to trust this key, and now if you verify the file:</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># rpm --checksig php-fpm-xda_5.2.23_x86_64.rpm <br />
php-fpm-xda_5.2.23_x86_64.rpm: rsa sha1 (md5) pgp md5 OK</div></td></tr></tbody></table></div>
<p>This RPM is now ready for use in a repo. In the .repo file, use the following to ensure it follows the correct signature:</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">gpgcheck=1<br />
gpgkey=http://repo.xxxx.com/RPM-GPG-KEY-reponame</div></td></tr></tbody></table></div>
<p>All key names have been changed to protect the innocent. </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/systembash?a=FsGRY7JEHgo:t7O-Ba5mJHw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/systembash?i=FsGRY7JEHgo:t7O-Ba5mJHw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=FsGRY7JEHgo:t7O-Ba5mJHw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/systembash?i=FsGRY7JEHgo:t7O-Ba5mJHw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=FsGRY7JEHgo:t7O-Ba5mJHw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/systembash?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=FsGRY7JEHgo:t7O-Ba5mJHw:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/systembash?i=FsGRY7JEHgo:t7O-Ba5mJHw:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=FsGRY7JEHgo:t7O-Ba5mJHw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/systembash?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/systembash/~4/FsGRY7JEHgo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://systembash.com/content/simple-guide-to-signing-rpms-with-fpm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://systembash.com/content/simple-guide-to-signing-rpms-with-fpm/</feedburner:origLink></item>
		<item>
		<title>Track TCP and UDP Connections With Zabbix</title>
		<link>http://feedproxy.google.com/~r/systembash/~3/B4BS_XOQBLM/</link>
		<comments>http://systembash.com/content/track-tcp-and-udp-connections-with-zabbix/#comments</comments>
		<pubDate>Thu, 14 Mar 2013 14:35:04 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Configurations]]></category>
		<category><![CDATA[Other Code]]></category>
		<category><![CDATA[System Administration]]></category>

		<guid isPermaLink="false">http://systembash.com/?p=1318</guid>
		<description><![CDATA[<p>There is a very easy way to track opened TCP connections in Zabbix. Although it does not come built in to the Zabbix agent, it is simple enough to get. This method will allow you track the open number of TCP and UDP connections, as well as track TCP connections in TIME_WAIT.</p>
<p>  </p>
<p>Rather than using</p>
1grep
<p>to count numbers in netstat, which can take an extraordinary amount of time on busy servers, I&#8217;ve used /proc/net/sockstat to get this data. </p>
<p>Add the following parameters to zabbix_agentd.conf:</p>
12345678UserParameter=sockstat.sockets,cat /proc/net/sockstat&#124;grep sockets&#124;cut -d' ' -f 3
UserParameter=sockstat.tcp.inuse,cat /proc/net/sockstat&#124;grep TCP&#124;cut -d' ' -f 3
UserParameter=sockstat.tcp.orphan,cat /proc/net/sockstat&#124;grep TCP&#124;cut -d' ' -f 5
UserParameter=sockstat.tcp.timewait,cat /proc/net/sockstat&#124;grep TCP&#124;cut -d' ' -f 7
UserParameter=sockstat.tcp.allocated,cat /proc/net/sockstat&#124;grep TCP&#124;cut -d' ' -f 9
UserParameter=sockstat.tcp.mem,cat /proc/net/sockstat&#124;grep TCP&#124;cut -d' ' -f 11
UserParameter=sockstat.udp.inuse,cat /proc/net/sockstat&#124;grep UDP:&#124;cut -d' ' -f 3
UserParameter=sockstat.udp.mem,cat /proc/net/sockstat&#124;grep UDP:&#124;cut -d' ' -f 5
<p>Then you can either manually import these UserParameters into ...]]></description>
				<content:encoded><![CDATA[<p>There is a very easy way to track opened TCP connections in Zabbix. Although it does not come built in to the Zabbix agent, it is simple enough to get. This method will allow you track the open number of TCP and UDP connections, as well as track TCP connections in TIME_WAIT.</p>
<p><a href="http://systembash.com/wp-content/uploads/2013/03/tcp_udp_sockets_zabbix.jpg"><img src="http://systembash.com/wp-content/uploads/2013/03/tcp_udp_sockets_zabbix.jpg" alt="TCP UDP Sockets Zabbix" width="889" height="395" class="aligncenter size-full wp-image-1321" /></a>  </p>
<p>Rather than using</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">grep</div></td></tr></tbody></table></div>
<p>to count numbers in netstat, which can take an extraordinary amount of time on busy servers, I&#8217;ve used /proc/net/sockstat to get this data. </p>
<p>Add the following parameters to <strong>zabbix_agentd.conf</strong>:</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">UserParameter=sockstat.sockets,cat /proc/net/sockstat|grep sockets|cut -d' ' -f 3<br />
UserParameter=sockstat.tcp.inuse,cat /proc/net/sockstat|grep TCP|cut -d' ' -f 3<br />
UserParameter=sockstat.tcp.orphan,cat /proc/net/sockstat|grep TCP|cut -d' ' -f 5<br />
UserParameter=sockstat.tcp.timewait,cat /proc/net/sockstat|grep TCP|cut -d' ' -f 7<br />
UserParameter=sockstat.tcp.allocated,cat /proc/net/sockstat|grep TCP|cut -d' ' -f 9<br />
UserParameter=sockstat.tcp.mem,cat /proc/net/sockstat|grep TCP|cut -d' ' -f 11<br />
UserParameter=sockstat.udp.inuse,cat /proc/net/sockstat|grep UDP:|cut -d' ' -f 3<br />
UserParameter=sockstat.udp.mem,cat /proc/net/sockstat|grep UDP:|cut -d' ' -f 5</div></td></tr></tbody></table></div>
<p>Then you can either manually import these UserParameters into Zabbix, or use this template (if you&#8217;re using Zabbix 2.x).</p>
<p><a href="http://systembash.com/wp-content/uploads/2013/03/sockstat_templates.xml">Download the sockstat Zabbix template</a></p>
<p>It includes the items and a graph for the socket stats. Enjoy!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/systembash?a=B4BS_XOQBLM:4YOmyrF7RRY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/systembash?i=B4BS_XOQBLM:4YOmyrF7RRY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=B4BS_XOQBLM:4YOmyrF7RRY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/systembash?i=B4BS_XOQBLM:4YOmyrF7RRY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=B4BS_XOQBLM:4YOmyrF7RRY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/systembash?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=B4BS_XOQBLM:4YOmyrF7RRY:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/systembash?i=B4BS_XOQBLM:4YOmyrF7RRY:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=B4BS_XOQBLM:4YOmyrF7RRY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/systembash?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/systembash/~4/B4BS_XOQBLM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://systembash.com/content/track-tcp-and-udp-connections-with-zabbix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://systembash.com/content/track-tcp-and-udp-connections-with-zabbix/</feedburner:origLink></item>
		<item>
		<title>Using rsync on an Alternate SSH Port or with OpenSSH Keys</title>
		<link>http://feedproxy.google.com/~r/systembash/~3/wGBSt4yA11s/</link>
		<comments>http://systembash.com/content/using-rsync-on-an-alternate-ssh-port-or-with-openssh-keys/#comments</comments>
		<pubDate>Tue, 09 Oct 2012 22:03:36 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Shell]]></category>
		<category><![CDATA[System Administration]]></category>
		<category><![CDATA[openssh]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://systembash.com/?p=1298</guid>
		<description><![CDATA[<p>Best practices state that you should run ssh on an non-standard port. Unfortunately some programs use port 22 by default and it isn&#8217;t obvious what the switch is to change this port. </p>
<p>One of these programs is the eminently useful rsync. It states how to do this in the man file, but it is hidden and non-obvious. You simply add the option via the -e command to pass ssh options. -e is the shell rsync uses to connect to a remote host. </p>
Using rsync on an alternate ssh port
1rsync -avz -e &#34;ssh -p $port&#34; username@ip:/path/to/files/ /local/files/
Using rsync with an openssh key
1rsync -avz -e &#34;ssh -i /path/to/private/key&#34; username@ip:/path/to/files/ /local/files/
<p>Or with both an alternate port and openssh key:</p>
1rsync -avz -e &#34;ssh -i /path/to/private/key -p $port&#34; username@ip:/path/to/files/ /local/files/
<p>This can be used in a bash script if you set the $port variable or directly ...]]></description>
				<content:encoded><![CDATA[<p>Best practices state that you should run ssh on an non-standard port. Unfortunately some programs use port 22 by default and it isn&#8217;t obvious what the switch is to change this port. </p>
<p>One of these programs is the eminently useful <strong><a href="http://en.wikipedia.org/wiki/Rsync">rsync</a></strong>. It states how to do this in the man file, but it is hidden and non-obvious. You simply add the option via the <em>-e</em> command to pass ssh options. -e is the shell rsync uses to connect to a remote host. </p>
<h3>Using rsync on an alternate ssh port</h3>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">rsync -avz -e &quot;ssh -p $port&quot; username@ip:/path/to/files/ /local/files/</div></td></tr></tbody></table></div>
<h3>Using rsync with an openssh key</h3>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">rsync -avz -e &quot;ssh -i /path/to/private/key&quot; username@ip:/path/to/files/ /local/files/</div></td></tr></tbody></table></div>
<p>Or with both an alternate port and openssh key:</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">rsync -avz -e &quot;ssh -i /path/to/private/key -p $port&quot; username@ip:/path/to/files/ /local/files/</div></td></tr></tbody></table></div>
<p>This can be used in a bash script if you set the $port variable or directly on the command line by using the set port instead of $port.</p>
<p>Here are some other useful pages regarding using rsync. If you don&#8217;t use rsync for remote file transfer &#8211; I highly recommend it. The transfer speed is much faster than scp over ssh. </p>
<ul>
<li><a href="http://www.thegeekstuff.com/2010/09/rsync-command-examples/" title="rsync command examples">rsync command examples</a></li>
<li><a href="http://troy.jdmz.net/rsync/index.html">rsync custom commands</a></li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/systembash?a=wGBSt4yA11s:csJJP8tUS-s:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/systembash?i=wGBSt4yA11s:csJJP8tUS-s:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=wGBSt4yA11s:csJJP8tUS-s:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/systembash?i=wGBSt4yA11s:csJJP8tUS-s:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=wGBSt4yA11s:csJJP8tUS-s:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/systembash?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=wGBSt4yA11s:csJJP8tUS-s:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/systembash?i=wGBSt4yA11s:csJJP8tUS-s:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=wGBSt4yA11s:csJJP8tUS-s:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/systembash?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/systembash/~4/wGBSt4yA11s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://systembash.com/content/using-rsync-on-an-alternate-ssh-port-or-with-openssh-keys/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://systembash.com/content/using-rsync-on-an-alternate-ssh-port-or-with-openssh-keys/</feedburner:origLink></item>
		<item>
		<title>Simple Sysadmin Trick: Using tcpdump To Sniff Web Server Traffic</title>
		<link>http://feedproxy.google.com/~r/systembash/~3/DsGmgCo9pHs/</link>
		<comments>http://systembash.com/content/simple-sysadmin-trick-using-tcpdump-to-sniff-web-server-traffic/#comments</comments>
		<pubDate>Wed, 03 Oct 2012 01:56:00 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Shell]]></category>
		<category><![CDATA[System Administration]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[tcpdump]]></category>

		<guid isPermaLink="false">http://systembash.com/?p=1264</guid>
		<description><![CDATA[<p>Sometimes, you just have to look into the raw data to see what your web server is doing. The logs might not show you enough detail or you suspect something is going on which is just not shown in the log files. Or, as in my case, logging is turned off because of too much activity. </p>
<p>The excellent tcpdump utiliy comes to the rescue here. I recommend you get more familiar with the tcpdump man page. Here is the command you can use, in a nutshell:</p>
1tcpdump -nl -w - -i eth1 -c 500 port 80&#124;strings
<p>or alternatively with just tcpdump (Thanks Chris!):</p>
1tcpdump -nl -s 0 -A -i eth1 -c 500 port 80
<p>Your command line will print out all traffic exiting your server from port 80, headers and all. Lets look at the options in more detail.</p>

-n: Don&#8217;t convert addresses (i.e., host ...]]></description>
				<content:encoded><![CDATA[<p>Sometimes, you just have to look into the raw data to see what your web server is doing. The logs might not show you enough detail or you suspect something is going on which is just not shown in the log files. Or, as in my case, logging is turned off because of too much activity. </p>
<p>The excellent <a href="http://www.tcpdump.org/">tcpdump</a> utiliy comes to the rescue here. I recommend you get more familiar with the <a href="http://www.tcpdump.org/tcpdump_man.html">tcpdump man page</a>. Here is the command you can use, in a nutshell:</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">tcpdump -nl -w - -i eth1 -c 500 port 80|strings</div></td></tr></tbody></table></div>
<p>or alternatively with just tcpdump (Thanks <a href="https://plus.google.com/116016060571998963190/posts">Chris</a>!):</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">tcpdump -nl -s 0 -A -i eth1 -c 500 port 80</div></td></tr></tbody></table></div>
<p>Your command line will print out all traffic exiting your server from port 80, headers and all. Lets look at the options in more detail.</p>
<ul>
<li><strong>-n:</strong> Don&#8217;t convert addresses (i.e., host addresses, port numbers, etc.) to names.</li>
<li><strong>-l:</strong> Make stdout line buffered. Useful if you want to see the data while capturing it.</li>
<li><strong>-w:</strong> Write the raw packets to file rather than parsing and printing them out. (Sent to stdout)</li>
<li><strong>-i:</strong> Interface you want to sniff on, usually eth0 or eth1, but depends on your system.</li>
<li><strong>-c:</strong> Number of packets to capture</li>
<li><strong>port:</strong> port 80, duh :)</li>
<li><strong>-A:</strong> Print each packet (minus its link level header) in ASCII.</li>
<li><strong>-s:</strong> size</li>
</ul>
<p>Now, depending on your web server configuration, you will probably have gzipped content which comes out as garbled characters. To strip all that out, just pipe it through <strong>strings</strong>. </p>
<p>The output will look something like this:</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">GET /about/comment-page-1 HTTP/1.0<br />
Accept: image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*<br />
User-Agent: Mozilla/2.0 (compatible; MSIE 3.02; Windows CE; 240x320)<br />
Referer: http://quittingsoda.com/about/comment-page-1#comment-6637<br />
Host: quittingsoda.com<br />
Cookie: comment_author_xxx=sakyjartory; comment_author_email_26e707905b5fd6e7139333eb1dab208f=olfaexxxx; comment_author_url_26e707905b5fd6e7139333eb1dab208xxx<br />
HTTP/1.1 200 OK<br />
Date: Wed, 03 Oct 2012 01:49:19 GMT<br />
Server: Apache/2<br />
X-Powered-By: PHP/5.2.17<br />
X-Pingback: http://quittingsoda.com/xmlrpc.php<br />
Vary: Accept-Encoding,User-Agent<br />
Connection: close<br />
Content-Type: text/html; charset=UTF-8<br />
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.1//EN&quot; &quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&quot;&gt;<br />
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; &gt;<br />
&lt;head profile=&quot;http://gmpg.org/xfn/11&quot;&gt;<br />
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;<br />
&lt;title&gt;About This Site | Quitting Soda&lt;/title&gt;</div></td></tr></tbody></table></div>
<p>Let me know if you have any suggestions for improving this simple command line program for sniffing your web server traffic! Netcat is an essential tool that every linux administrator should get to know better. </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/systembash?a=DsGmgCo9pHs:AnZtbnx_i3E:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/systembash?i=DsGmgCo9pHs:AnZtbnx_i3E:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=DsGmgCo9pHs:AnZtbnx_i3E:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/systembash?i=DsGmgCo9pHs:AnZtbnx_i3E:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=DsGmgCo9pHs:AnZtbnx_i3E:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/systembash?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=DsGmgCo9pHs:AnZtbnx_i3E:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/systembash?i=DsGmgCo9pHs:AnZtbnx_i3E:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=DsGmgCo9pHs:AnZtbnx_i3E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/systembash?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/systembash/~4/DsGmgCo9pHs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://systembash.com/content/simple-sysadmin-trick-using-tcpdump-to-sniff-web-server-traffic/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://systembash.com/content/simple-sysadmin-trick-using-tcpdump-to-sniff-web-server-traffic/</feedburner:origLink></item>
		<item>
		<title>How We Defeated a Proxy Jacker (Google Web Spam Syndrome)</title>
		<link>http://feedproxy.google.com/~r/systembash/~3/rnHfxeZPBHw/</link>
		<comments>http://systembash.com/content/how-we-defeated-a-proxy-jacker-google-web-spam-syndrome/#comments</comments>
		<pubDate>Fri, 31 Aug 2012 05:18:49 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Other Technology]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[webspam]]></category>

		<guid isPermaLink="false">http://systembash.com/?p=1276</guid>
		<description><![CDATA[<p>A few months ago, we had an interesting issue with another website stealing our content in an unusual way. Essentially they ran a proxy service on a similar domain (a .com.ar instead of .com) and then replicated our site, replacing our ads with their own. They also ran our content through a content replacement algorithm, removing certain pieces of text and also replacing our own domain with theirs. It is fairly easy to do.</p>
<p>We had a few concerns about this. Firstly, we were worried that unsuspecting users would enter their login information on this site. Also, they actually were showing up in Google search engine results, which both hurts our brand, ranking and perception by users (this site loaded much slower than ours obviously). </p>
First Attempt To Stop The Proxy Spammers: IP Blocking
<p>Determined to put a stop to it, the ...]]></description>
				<content:encoded><![CDATA[<p>A few months ago, <a href="http://forum.xda-developers.com/">we</a> had an interesting issue with another website stealing our content in an unusual way. Essentially they ran a proxy service on a similar domain (a .com.ar instead of .com) and then replicated our site, replacing our ads with their own. They also ran our content through a content replacement algorithm, removing certain pieces of text and also replacing our own domain with theirs. It is <a href="http://www.blackhatworld.com/blackhat-seo/proxies/152995-replace-banners-adcode-sites-visited-throught-my-proxies.html">fairly</a> <a href="http://forums.digitalpoint.com/showthread.php?t=383902">easy</a> <a href="http://stackoverflow.com/questions/9465236/python-twisted-proxy-and-modifying-content">to</a> <a href="http://www.charlesproxy.com/">do</a>.</p>
<p>We had a few concerns about this. Firstly, we were worried that unsuspecting users would enter their login information on this site. Also, they actually were showing up in Google search engine results, which both hurts our brand, ranking and perception by users (this site loaded much slower than ours obviously). </p>
<h2>First Attempt To Stop The Proxy Spammers: IP Blocking</h2>
<p>Determined to put a stop to it, the first method we tried was blocking their crawler IPs. However, they owned enough IPs in enough ranges that it was simply a cat and mouse game. We would block them, and then a day later they would be back up. After a few weeks of this it didn&#8217;t seem to be a viable long-term solution for blocking these spammers. </p>
<h2>Next, We Used Their Mirroring Of Our Content Against Them</h2>
<p>Next I thought I would use the fact that they were modifying our page content and disable their site that way. </p>
<p>I created a box in html/css which would trigger via JavaScript only when loading from their domain. But, you wouldn&#8217;t think it would be that easy would you? They replace our domain with theirs, modifying any mention of their own domain. So I used a quick hash function to create a unique identifier from the loaded domain and then matched against that. </p>
<p>Also, figuring they would just take out the HTML box I created, I also found it useful to display a hex-encoded version of it. You can encode text to the hex-escaped version for Javascript with the following command line:</p>
<div class="codecolorer-container bash mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-n</span> <span style="color: #ff0000;">&quot;some text&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">od</span> <span style="color: #660033;">-A</span> n <span style="color: #660033;">-t</span> x1 <span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">'s/ /\\x/g'</span></div></td></tr></tbody></table></div>
<p>The final Javascript I started loading on our site (and therefore their site) is below:</p>
<div class="codecolorer-container javascript mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span><br />
jQuery<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; <span style="color: #006600; font-style: italic;">// From http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method/</span><br />
&nbsp; String.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">hashCode</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> hash <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">length</span> <span style="color: #339933;">==</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span> hash<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; char <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">charCodeAt</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; hash <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>hash<span style="color: #339933;">&lt;&lt;</span><span style="color: #CC0000;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span>hash<span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span>char<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; hash <span style="color: #339933;">=</span> hash <span style="color: #339933;">&amp;</span> hash<span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Convert to 32bit integer</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> hash<span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; <span style="color: #006600; font-style: italic;">// sets hash to current domain</span><br />
&nbsp; domainhash <span style="color: #339933;">=</span> document.<span style="color: #660066;">domain</span>.<span style="color: #660066;">hashCode</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #006600; font-style: italic;">// lists domains they are loading the site from (calculate hash of the attacker domain first)</span><br />
&nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>domainhash <span style="color: #339933;">==</span> <span style="color: #3366CC;">'-1289333690'</span> <span style="color: #339933;">||</span> domainhash <span style="color: #339933;">==</span> <span style="color: #3366CC;">'208666227'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> overlay_orig <span style="color: #339933;">=</span> jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;div style=&quot;position: fixed;top: 0;left: 0;width: 100%;height: 100%;background-color: #000;filter:alpha(opacity=50);-moz-opacity:0.5;-khtml-opacity: 0.5;opacity: 0.5;z-index: 999;text-align:middle;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;position: fixed; top: 0px; width: 100%; z-index: 10000;&quot;&gt;&lt;div style=&quot;z-index: 10000; width: 400px; padding: 30px; margin: 200px auto; background-color: white; border: 1px solid black;color: black;&quot;&gt;&lt;h1 style=&quot;color:red&quot;&gt;Warning: This Is A Scam Site&lt;/h1&gt;&lt;p&gt;Sorry for the interruption, but the site you are currently visiting is not the real one. This site scrapes our content and injects their own ads to make money./div&gt;&lt;/div&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #006600; font-style: italic;">// Hex encoded version of above, used to defeat content replacement</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> overlay <span style="color: #339933;">=</span> jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;<span style="color: #000099; font-weight: bold;">\x</span>3c<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>76<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>73<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>79<span style="color: #000099; font-weight: bold;">\x</span>6c<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>3d<span style="color: #000099; font-weight: bold;">\x</span>22<span style="color: #000099; font-weight: bold;">\x</span>70<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>73<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>66<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>78<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>70<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>6c<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>66<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>77<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>68<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>31<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>25<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>68<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>67<span style="color: #000099; font-weight: bold;">\x</span>68<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>31<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>25<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>62<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>63<span style="color: #000099; font-weight: bold;">\x</span>6b<span style="color: #000099; font-weight: bold;">\x</span>67<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>75<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>2d<span style="color: #000099; font-weight: bold;">\x</span>63<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>6c<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>23<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>66<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>6c<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>6c<span style="color: #000099; font-weight: bold;">\x</span>70<span style="color: #000099; font-weight: bold;">\x</span>68<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>28<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>70<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>63<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>79<span style="color: #000099; font-weight: bold;">\x</span>3d<span style="color: #000099; font-weight: bold;">\x</span>35<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>29<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>2d<span style="color: #000099; font-weight: bold;">\x</span>6d<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>7a<span style="color: #000099; font-weight: bold;">\x</span>2d<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>70<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>63<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>79<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>2e<span style="color: #000099; font-weight: bold;">\x</span>35<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>2d<span style="color: #000099; font-weight: bold;">\x</span>6b<span style="color: #000099; font-weight: bold;">\x</span>68<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>6d<span style="color: #000099; font-weight: bold;">\x</span>6c<span style="color: #000099; font-weight: bold;">\x</span>2d<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>70<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>63<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>79<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>2e<span style="color: #000099; font-weight: bold;">\x</span>35<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>70<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>63<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>79<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>2e<span style="color: #000099; font-weight: bold;">\x</span>35<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>7a<span style="color: #000099; font-weight: bold;">\x</span>2d<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>78<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>39<span style="color: #000099; font-weight: bold;">\x</span>39<span style="color: #000099; font-weight: bold;">\x</span>39<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>78<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>2d<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>6c<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>67<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>6d<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>6c<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>22<span style="color: #000099; font-weight: bold;">\x</span>3e<span style="color: #000099; font-weight: bold;">\x</span>3c<span style="color: #000099; font-weight: bold;">\x</span>2f<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>76<span style="color: #000099; font-weight: bold;">\x</span>3e<span style="color: #000099; font-weight: bold;">\x</span>3c<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>76<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>73<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>79<span style="color: #000099; font-weight: bold;">\x</span>6c<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>3d<span style="color: #000099; font-weight: bold;">\x</span>22<span style="color: #000099; font-weight: bold;">\x</span>70<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>73<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>66<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>78<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>70<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>70<span style="color: #000099; font-weight: bold;">\x</span>78<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>77<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>68<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>31<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>25<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>7a<span style="color: #000099; font-weight: bold;">\x</span>2d<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>78<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>31<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>22<span style="color: #000099; font-weight: bold;">\x</span>3e<span style="color: #000099; font-weight: bold;">\x</span>3c<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>76<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>73<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>79<span style="color: #000099; font-weight: bold;">\x</span>6c<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>3d<span style="color: #000099; font-weight: bold;">\x</span>22<span style="color: #000099; font-weight: bold;">\x</span>7a<span style="color: #000099; font-weight: bold;">\x</span>2d<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>78<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>31<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>77<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>68<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>34<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>70<span style="color: #000099; font-weight: bold;">\x</span>78<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>70<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>67<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>33<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>70<span style="color: #000099; font-weight: bold;">\x</span>78<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>6d<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>67<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>32<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>30<span style="color: #000099; font-weight: bold;">\x</span>70<span style="color: #000099; font-weight: bold;">\x</span>78<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>75<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>62<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>63<span style="color: #000099; font-weight: bold;">\x</span>6b<span style="color: #000099; font-weight: bold;">\x</span>67<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>75<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>2d<span style="color: #000099; font-weight: bold;">\x</span>63<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>6c<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>77<span style="color: #000099; font-weight: bold;">\x</span>68<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>62<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>31<span style="color: #000099; font-weight: bold;">\x</span>70<span style="color: #000099; font-weight: bold;">\x</span>78<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>73<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>6c<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>62<span style="color: #000099; font-weight: bold;">\x</span>6c<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>63<span style="color: #000099; font-weight: bold;">\x</span>6b<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>63<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>6c<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>62<span style="color: #000099; font-weight: bold;">\x</span>6c<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>63<span style="color: #000099; font-weight: bold;">\x</span>6b<span style="color: #000099; font-weight: bold;">\x</span>3b<span style="color: #000099; font-weight: bold;">\x</span>22<span style="color: #000099; font-weight: bold;">\x</span>3e<span style="color: #000099; font-weight: bold;">\x</span>3c<span style="color: #000099; font-weight: bold;">\x</span>68<span style="color: #000099; font-weight: bold;">\x</span>31<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>73<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>79<span style="color: #000099; font-weight: bold;">\x</span>6c<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>3d<span style="color: #000099; font-weight: bold;">\x</span>22<span style="color: #000099; font-weight: bold;">\x</span>63<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>6c<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>22<span style="color: #000099; font-weight: bold;">\x</span>3e<span style="color: #000099; font-weight: bold;">\x</span>57<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>67<span style="color: #000099; font-weight: bold;">\x</span>3a<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>54<span style="color: #000099; font-weight: bold;">\x</span>68<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>73<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>49<span style="color: #000099; font-weight: bold;">\x</span>73<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>41<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>53<span style="color: #000099; font-weight: bold;">\x</span>63<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>6d<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>53<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>3c<span style="color: #000099; font-weight: bold;">\x</span>2f<span style="color: #000099; font-weight: bold;">\x</span>68<span style="color: #000099; font-weight: bold;">\x</span>31<span style="color: #000099; font-weight: bold;">\x</span>3e<span style="color: #000099; font-weight: bold;">\x</span>3c<span style="color: #000099; font-weight: bold;">\x</span>70<span style="color: #000099; font-weight: bold;">\x</span>3e<span style="color: #000099; font-weight: bold;">\x</span>53<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>79<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>66<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>68<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>75<span style="color: #000099; font-weight: bold;">\x</span>70<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>2c<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>62<span style="color: #000099; font-weight: bold;">\x</span>75<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>68<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>73<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>79<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>75<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>63<span style="color: #000099; font-weight: bold;">\x</span>75<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>6c<span style="color: #000099; font-weight: bold;">\x</span>79<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>76<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>73<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>67<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>73<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>68<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>6c<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>2e<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>54<span style="color: #000099; font-weight: bold;">\x</span>68<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>73<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>73<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>73<span style="color: #000099; font-weight: bold;">\x</span>63<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>70<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>73<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>75<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>63<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>6a<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>63<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>73<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>68<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>72<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>77<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>73<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>74<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>6d<span style="color: #000099; font-weight: bold;">\x</span>61<span style="color: #000099; font-weight: bold;">\x</span>6b<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>6d<span style="color: #000099; font-weight: bold;">\x</span>6f<span style="color: #000099; font-weight: bold;">\x</span>6e<span style="color: #000099; font-weight: bold;">\x</span>65<span style="color: #000099; font-weight: bold;">\x</span>79<span style="color: #000099; font-weight: bold;">\x</span>2e<span style="color: #000099; font-weight: bold;">\x</span>2f<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>76<span style="color: #000099; font-weight: bold;">\x</span>3e<span style="color: #000099; font-weight: bold;">\x</span>3c<span style="color: #000099; font-weight: bold;">\x</span>2f<span style="color: #000099; font-weight: bold;">\x</span>64<span style="color: #000099; font-weight: bold;">\x</span>69<span style="color: #000099; font-weight: bold;">\x</span>76<span style="color: #000099; font-weight: bold;">\x</span>3e<br />
&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; overlay.<span style="color: #660066;">appendTo</span><span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">body</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></div></td></tr></tbody></table></div>
<p>After thoroughly testing and then putting up the code, we launched it live. It was very satisfying knowing that end-users were getting the warning message when visiting their site, and the actually reported their experience back to us. After about 12 hours, they figured out our play out and turned off their proxy. Success!</p>
<p>&#8230;</p>
<p>Not quite. The next morning I woke up to see their site back up. Looking into their code, they had removed the JS completely. I changed our code, embedded it in a JS file, and used other creative means to get it back up &#8211; but in the end they were just able to disable the Javascript entirely and defeat this attack. It was just another cat-and-mouse game.</p>
<h2>We also tried DMCA/Abuse Contacts</h2>
<p>We also tried to send notices to their hosting company to get them to take down the site. They were hosted in Argentina, so DMCA is not applicable. Their abuse contacts were non-responsive. </p>
<p>Originally we thought we could go after their domain registration since it violated our trademark &#8211; but this is a long and involved process involving lots of paperwork and time, and <em>for another $10 they could just register another domain name</em>. We didn&#8217;t think this was a viable option. </p>
<h2>Going to the Source: Google</h2>
<p>Google is involved in this scam in a number of ways. First, they were indexing and serving his site in their search results. Secondly the scammers were replacing our ads with their own Google AdSense ads, which I am sure is a ToS violation. </p>
<p>While we were attempting to defeat their site from a technical perspective, we also began looking at Google to see what we could do from there. </p>
<p><a href="https://www.google.com/webmasters/tools/dmca-notice?pli=1&#038;&#038;rd=1">Google has a process for submitting DMCA requests.</a> The issue in this case is that they make you submit one batch at a time, and with millions of pages on our site and indexed in Google, it just doesn&#8217;t make sense to list out urls line by line. It worked to remove those submitted results from search engine results, but it was like cutting grass with scissors. Finally, I attempted to contact Matt Cutts via Twitter:</p>
<p><center><br />
<blockquote class="twitter-tweet" data-in-reply-to="225968171889336320">
<p><a href="https://twitter.com/ddrager"><s>@</s><b>ddrager</b></a> do a DMCA request.</p>
<p>&mdash; Matt Cutts (@mattcutts) <a href="https://twitter.com/mattcutts/status/226019966971965440" data-datetime="2012-07-19T18:25:34+00:00">July 19, 2012</a></p></blockquote>
<p></center><br />
<script src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>Thanks. So much for that venue. I know @mattcutts is the public face of Web Spam at Google so I&#8217;m sure that he gets lots of @&#8217;s with dumb questions, but we were already way beyond this.  </p>
<h3>Finally, What Worked</h3>
<p>Members of our site had a few personal contacts at Google both in an AdSense representative and otherwise. One of our contacts with Google was able to bring this issue up with the right people and they finally took the offending domain out of the <a href="http://en.wikipedia.org/wiki/Search_engine_results_page">SERP</a>s permanently. We also reported their AdSense account &#8211; but we don&#8217;t know what happened with that. Without them showing up in SERPs, it was a moot point because they won&#8217;t be getting many visitors any more.</p>
<h2>The Problem With Google</h2>
<p>Google has become so large that it is almost impossible to get a situation like this taken care of without knowing someone who works for them. They have many automated systems in place, but scammers will continue to utilize loopholes for their own profit. <em>Google enables this type of scam, yet they also profit from it.</em> </p>
<p>I wish Google would have some sort of <a href="http://en.wikipedia.org/wiki/Ombudsman">Ombudsman</a> or review system set up so that someone like us, who is having our content ripped off by others using Google&#8217;s own tools (and with Google taking a percentage of profit from these people), has a way to efficiently deal with them without resorting to personal contacts. We spent much time on this, time that could have been put to better use. </p>
<p>Or maybe personal contacts are the only real way to deal with a situation like this?</p>
<p>Anyway &#8211; I am welcoming comments and any other ideas for dealing with these Proxy Hijackers and how to keep them offline. I&#8217;m curious how widespread this type of incident is, we know of only one other site that was having the same issue from the same scammer.</p>
<p>After all, they can always get another domain for $10. </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/systembash?a=rnHfxeZPBHw:0W6xGmyq6DI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/systembash?i=rnHfxeZPBHw:0W6xGmyq6DI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=rnHfxeZPBHw:0W6xGmyq6DI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/systembash?i=rnHfxeZPBHw:0W6xGmyq6DI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=rnHfxeZPBHw:0W6xGmyq6DI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/systembash?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=rnHfxeZPBHw:0W6xGmyq6DI:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/systembash?i=rnHfxeZPBHw:0W6xGmyq6DI:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=rnHfxeZPBHw:0W6xGmyq6DI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/systembash?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/systembash/~4/rnHfxeZPBHw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://systembash.com/content/how-we-defeated-a-proxy-jacker-google-web-spam-syndrome/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://systembash.com/content/how-we-defeated-a-proxy-jacker-google-web-spam-syndrome/</feedburner:origLink></item>
		<item>
		<title>Evaluating FTP Servers: ProFTPd vs PureFTPd vs vsftpd</title>
		<link>http://feedproxy.google.com/~r/systembash/~3/fLKXH183-44/</link>
		<comments>http://systembash.com/content/evaluating-ftp-servers-proftpd-vs-pureftpd-vs-vsftpd/#comments</comments>
		<pubDate>Tue, 28 Aug 2012 22:42:34 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programs]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[System Administration]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://systembash.com/?p=1267</guid>
		<description><![CDATA[Usually, I will try to push clients towards using SCP (via a client such as WinSCP), however inevitably there are clients who do not understand this new method of accessing their files securely online, and who for one reason or another insist on using FTP for their online file access. As they say - the customer is always right?]]></description>
				<content:encoded><![CDATA[<p><img src="http://systembash.com/wp-content/uploads/2012/08/ftp.png" alt="" title="ftp" width="200" height="200" class="alignleft size-full wp-image-1273" />Usually, I will try to push clients towards using SCP (via a client such as WinSCP), however inevitably there are clients who do not understand this new method of accessing their files securely online, and who for one reason or another insist on using FTP for their online file access. As they say &#8211; the customer is always right?</p>
<p>Anyway, there are currently 3 mainstream FTP servers available via the yum command on CentOS 6.x. PureFTPd, ProFTPd and vsftpd. <strong>So which FTP server is the best?</strong> I will summarize the servers below, or <a href="#summary">skip to the summary</a>.</p>
<h3><a href="http://www.proftpd.org/">ProFTPd</a></h3>
<p><a href="http://www.proftpd.org/">ProFTPd</a> is a modular FTP server which has been around for a long time. The large control panels (cPanel, DirectAdmin) all support ProFTPd and have for years. </p>
<p>The most <a href="http://www.proftpd.org/features.html">feature rich</a> of the bunch is certainly ProFTPd. There are a ton of plugins available for it, and the creator of it <a href="http://www.proftpd.org/goals.html">modeled its configuration architecture</a> much like Apache&#8217;s &#8211; it is also using the GPL for licensing.  </p>
<p>Configuration of ProFTPd is fairly straight forward, and example configuration files abound at a quick search of Google. </p>
<p>ProFTPd is available on a wide variety of system architectures and operating systems. </p>
<p><i>ProFTPd Security</i></p>
<p>Of the bunch, ProFTPd has the most CVE vulnerabilities listed. The high number is most likely an indicator of ProFTPd&#8217;s widespread use which makes it a target of hackers. </p>
<p><a href="http://web.nvd.nist.gov/view/vuln/search-results?query=proftpd&#038;search_type=all&#038;cves=on">ProFTPd CVE Entries: 40</a><br />
<a href="http://www.shodanhq.com/exploits?q=proftpd">Shodan ProFTPd entries: 127</a></p>
<h3><a href="http://www.pureftpd.org/">PureFTPd</a></h3>
<p><a href="http://www.pureftpd.org/">PureFTPd</a>&#8216;s mantra is &#8216;Security First.&#8217; This is evident in the low number of CVE entries (see below). </p>
<p>Licensed under the BSD license, PureFTPd is also available on a wide-range of operating systems (but not Windows). </p>
<p><a href="http://www.pureftpd.org/project/pure-ftpd/doc">Configuration of PureFTPd</a> is simple, with a no-configuration file option. Although not as widely used as ProFTPd, PureFTPd has many configuration examples listed online. </p>
<p><i>PureFTPd Security</i></p>
<p>PureFTPd&#8217;s &#8220;Security First&#8221; mantra puts it at the lead in the security department with the fewest security vulnerabilities. </p>
<p><a href="http://web.nvd.nist.gov/view/vuln/search-results?query=pure-ftpd&#038;search_type=all&#038;cves=on">PureFTPd CVE Entries: 4</a><br />
<a href="http://www.shodanhq.com/exploits?q=pure-ftpd">Shodan Pure-FTPd Entries: 12</a></p>
<h3><a href="https://security.appspot.com/vsftpd.html">vsftpd</a></h3>
<p><a href="https://security.appspot.com/vsftpd.html">vsftpd</a> is another GPL-licensed FTP server, which stands for &#8220;Very Security FTP daemon.&#8221; It is a lighweight FTP server built with security in mind.</p>
<p>Its lightweight nature allows it to scale very efficiently, and <a href="https://security.appspot.com/vsftpd.html">many large sites</a> (ftp.redhat.com, ftp.debian.org, ftp.freebsd.org) currently utilize vsftpd as their FTP server of choice. </p>
<p><i>vsftpd Security</i></p>
<p>vsftpd has a lower number of vulnerabilities listed in CVE than ProFTPd but more than PureFTPd. This could be because, since its name implies it is a secure FTP service, or because it is so widely used on large sites &#8211; that it is under more scrutiny than the others. </p>
<p><a href="http://web.nvd.nist.gov/view/vuln/search-results?query=vsftpd&#038;search_type=all&#038;cves=on">vsftpd CVE Entries: 12</a><br />
<a href="http://www.shodanhq.com/exploits?q=vsftpd">Shodan vsftpd entries: 41</a></p>
<h3><u>Summary &#038; FTP Server Recommendations</u></h3>
<p> <a name="summary">#</a></p>
<p>Considering the evaluations above, any server would work in a situation, however generally speaking:</p>
<ul>
<li>If you want a server with the most flexible configuration options and external modules: <strong>ProFTPd</strong></li>
<li>If you have just a few users and want a simple, secure FTP server: <strong>PureFTPd</strong></li>
<li>If you want to run a FTP server at scale with many users: <strong>vsftpd</strong></li>
</ul>
<p>Of course, everyone&#8217;s requirements are different so make sure you evaluate the options according to your own needs.</p>
<p>Disagree with my assessment? Let me know why!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/systembash?a=fLKXH183-44:uGZLg5fclgY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/systembash?i=fLKXH183-44:uGZLg5fclgY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=fLKXH183-44:uGZLg5fclgY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/systembash?i=fLKXH183-44:uGZLg5fclgY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=fLKXH183-44:uGZLg5fclgY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/systembash?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=fLKXH183-44:uGZLg5fclgY:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/systembash?i=fLKXH183-44:uGZLg5fclgY:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=fLKXH183-44:uGZLg5fclgY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/systembash?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/systembash/~4/fLKXH183-44" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://systembash.com/content/evaluating-ftp-servers-proftpd-vs-pureftpd-vs-vsftpd/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://systembash.com/content/evaluating-ftp-servers-proftpd-vs-pureftpd-vs-vsftpd/</feedburner:origLink></item>
		<item>
		<title>Simple Disk Benchmarking in Linux Using ‘dd’</title>
		<link>http://feedproxy.google.com/~r/systembash/~3/fbW14L5v8-w/</link>
		<comments>http://systembash.com/content/simple-disk-benchmarking-in-linux-using-dd/#comments</comments>
		<pubDate>Wed, 21 Mar 2012 18:23:03 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Shell]]></category>
		<category><![CDATA[System Administration]]></category>
		<category><![CDATA[benchmarking]]></category>

		<guid isPermaLink="false">http://systembash.com/?p=1256</guid>
		<description><![CDATA[<p>A great way to do a real-world disk test on your linux system is with a program called dd.</p>
<p>dd stands for data description and is used for copying data sources. </p>
<p>A simple command to do real-world disk write test in linux is:</p>
1dd bs=1M count=512 if=/dev/zero of=test conv=fdatasync
<p>This creates a file named &#8216;test&#8217; with all zeroes in it. The flag conv=fdatasync tells dd to sync the write to disk before it exits. Without this flag, dd will perform the write but some of it will remain in memory, not giving you an accurate picture of the true write performance of the disk. </p>
<p>A sample of the run is below, with a simple SATA disk:</p>
1234[14:11][root@server:~]$ dd bs=1M count=512 if=/dev/zero of=test conv=fdatasync
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 5.19611 s, 103 MB/s
<p>Now, there is a major caveat for using dd for ...]]></description>
				<content:encoded><![CDATA[<p>A great way to do a real-world disk test on your linux system is with a program called dd.</p>
<p>dd stands for data description and is used for copying data sources. </p>
<p>A simple command to do real-world disk write test in linux is:</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">dd bs=1M count=512 if=/dev/zero of=test conv=fdatasync</div></td></tr></tbody></table></div>
<p>This creates a file named &#8216;test&#8217; with all zeroes in it. The flag conv=fdatasync tells dd to sync the write to disk before it exits. Without this flag, dd will perform the write but some of it will remain in memory, not giving you an accurate picture of the true write performance of the disk. </p>
<p>A sample of the run is below, with a simple SATA disk:</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[14:11][root@server:~]$ dd bs=1M count=512 if=/dev/zero of=test conv=fdatasync<br />
512+0 records in<br />
512+0 records out<br />
536870912 bytes (537 MB) copied, 5.19611 s, 103 MB/s</div></td></tr></tbody></table></div>
<p>Now, there is a major caveat for using dd for disk benchmarking. The first is that it only tests filesystem access. Depending on your filesystem (I&#8217;m looking at your <a href="http://en.wikipedia.org/wiki/ZFS">ZFS</a>) the file write may itself just load into memory for writing later down the road. The same with a RAID controller on the system. </p>
<p>A <em>much more accurate</em> way of performing a disk benchmark is to use tools specifically geared towards this task. It will write much more data over a longer period of time. <a href="http://www.coker.com.au/bonnie++/">Bonnie++</a> is a particularly useful tool for this purpose. </p>
<p>Now don&#8217;t forget to remove that test file. </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/systembash?a=fbW14L5v8-w:2cLYji5tIIY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/systembash?i=fbW14L5v8-w:2cLYji5tIIY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=fbW14L5v8-w:2cLYji5tIIY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/systembash?i=fbW14L5v8-w:2cLYji5tIIY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=fbW14L5v8-w:2cLYji5tIIY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/systembash?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=fbW14L5v8-w:2cLYji5tIIY:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/systembash?i=fbW14L5v8-w:2cLYji5tIIY:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=fbW14L5v8-w:2cLYji5tIIY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/systembash?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/systembash/~4/fbW14L5v8-w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://systembash.com/content/simple-disk-benchmarking-in-linux-using-dd/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://systembash.com/content/simple-disk-benchmarking-in-linux-using-dd/</feedburner:origLink></item>
		<item>
		<title>Apache 2.4 Upgrade and the “Invalid Command ‘Order’” Error</title>
		<link>http://feedproxy.google.com/~r/systembash/~3/tt-EBmiPOaY/</link>
		<comments>http://systembash.com/content/apache-2-4-upgrade-and-the-invalid-command-order-error/#comments</comments>
		<pubDate>Tue, 06 Mar 2012 15:14:43 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Configurations]]></category>
		<category><![CDATA[apache]]></category>

		<guid isPermaLink="false">http://systembash.com/?p=1249</guid>
		<description><![CDATA[<p>The new Apache 2.4 has been released a few weeks ago and I decided to use this version while installing a new server (I compiled it from scratch rather that using an rpm or deb). </p>
<p>After using one of my tried and true Apache configuration files, I received this error on start:</p>
12Starting httpd: AH00526: Syntax error on line 104 of /usr/local/apache2/conf/httpd.conf:
Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration
<p>Common wisdom would imply that I should make sure the authz_host module is installed (LoadModule authz_host_module modules/mod_authz_host.so), however this just was not working.</p>
<p>Finally, I discovered that the Order command has been removed from Apache 2.4! According to the upgrade notes for Apache 2.4:</p>
<p>In 2.2, access control based on client hostname, IP address, and other characteristics of client requests was done using the directives Order, Allow, ...]]></description>
				<content:encoded><![CDATA[<p>The new <a href="http://arstechnica.com/business/news/2012/02/apache-devs-release-version-24-first-major-update-in-six-years.ars">Apache 2.4 has been released</a> a few weeks ago and I decided to use this version while installing a new server (I compiled it from scratch rather that using an rpm or deb). </p>
<p>After using one of my tried and true Apache configuration files, I received this error on start:</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Starting httpd: AH00526: Syntax error on line 104 of /usr/local/apache2/conf/httpd.conf:<br />
Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration</div></td></tr></tbody></table></div>
<p>Common wisdom would imply that I should make sure the authz_host module is installed (LoadModule authz_host_module modules/mod_authz_host.so), however this just was not working.</p>
<p>Finally, I discovered that the Order command has been removed from Apache 2.4! According to the <a href="http://httpd.apache.org/docs/trunk/upgrading.html">upgrade notes for Apache 2.4</a>:</p>
<blockquote><p>In 2.2, access control based on client hostname, IP address, and other characteristics of client requests was done using the directives Order, Allow, Deny, and Satisfy.</p>
<p>In 2.4, such access control is done in the same way as other authorization checks, using the new module mod_authz_host. The old access control idioms should be replaced by the new authentication mechanisms, although for compatibility with old configurations, the new module mod_access_compat is provided.</p></blockquote>
<p><strong>Basically, the Order command is depreciated. </strong></p>
<p>In my case, I replaced the lines:</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Order deny,allow<br />
Deny from all</div></td></tr></tbody></table></div>
<p>with:</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Require all denied</div></td></tr></tbody></table></div>
<p>Also make sure both of these modules are loaded:</p>
<div class="codecolorer-container text mac-classic codecolorer" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">LoadModule authz_core_module modules/mod_authz_core.so<br />
LoadModule authz_host_module modules/mod_authz_host.so</div></td></tr></tbody></table></div>
<p>Easy enough, but just be aware that there are several configuration changes between 2.2 and 2.4 which render your old Apache configuration files unusable. </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/systembash?a=tt-EBmiPOaY:SVvIOSLODOw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/systembash?i=tt-EBmiPOaY:SVvIOSLODOw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=tt-EBmiPOaY:SVvIOSLODOw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/systembash?i=tt-EBmiPOaY:SVvIOSLODOw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=tt-EBmiPOaY:SVvIOSLODOw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/systembash?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=tt-EBmiPOaY:SVvIOSLODOw:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/systembash?i=tt-EBmiPOaY:SVvIOSLODOw:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=tt-EBmiPOaY:SVvIOSLODOw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/systembash?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/systembash/~4/tt-EBmiPOaY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://systembash.com/content/apache-2-4-upgrade-and-the-invalid-command-order-error/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://systembash.com/content/apache-2-4-upgrade-and-the-invalid-command-order-error/</feedburner:origLink></item>
		<item>
		<title>Big Cable Wants to Encrypt Your Basic Channels – How To Fight For Your Rights</title>
		<link>http://feedproxy.google.com/~r/systembash/~3/smnCWkrUnsk/</link>
		<comments>http://systembash.com/content/big-cable-wants-to-encrypt-your-basic-channels-how-to-fight-for-your-rights/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 14:03:18 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Other Technology]]></category>
		<category><![CDATA[Television]]></category>

		<guid isPermaLink="false">http://systembash.com/?p=1209</guid>
		<description><![CDATA[<p>For those not familiar with the current state of digital television, cable providers send signals to your house in a format called QAM. This comes in two flavors, Encrypted and Unencrypted formats. Encryption is used to protect channel content from general viewership so that cable operators can sell these packages and/or individual channels based on a decryption device at the home.</p>
<p>The FCC currently has a ban in place on the encryption of the &#8220;Basic&#8221; level of cable service. This includes such channels as ABC, NBC, Fox, PBS, etc. It is a good way for low-income or budget conscious consumer to buy the basic level of service if they can not receive these channels over the air, possibly because of interference or distance to broadcasting towers. You do not currently need to rent a cable box (aka decryption device) to see ...]]></description>
				<content:encoded><![CDATA[<p>For those not familiar with the current state of digital television, cable providers send signals to your house in a format called <a href="https://en.wikipedia.org/wiki/QAM_(television)">QAM</a>. This comes in two flavors, Encrypted and Unencrypted formats. Encryption is used to protect channel content from general viewership so that cable operators can sell these packages and/or individual channels based on a decryption device at the home.</p>
<p>The FCC currently has a ban in place on the encryption of the &#8220;Basic&#8221; level of cable service. This includes such channels as ABC, NBC, Fox, PBS, etc. It is a good way for low-income or budget conscious consumer to buy the basic level of service if they can not receive these channels over the air, possibly because of interference or distance to broadcasting towers. <strong>You do not currently need to rent a cable box (aka decryption device) to see these channels</strong>, ensuring broad access to these channels which often perform public service functions such as notification in case of emergency, carrying signals from the emergency broadcast system, or also community television stations. </p>
<p>This is a <strong>good thing</strong>. It allows citizens to purchase a very cheap (I paid $12.99/mo) cable plan to receive these essential stations without the purchase of any decryption boxes from the cable company (which they force you to rent from them, I might add). </p>
<h2>The Cable Companies Want Your Money</h2>
<p><center><img src="http://systembash.com/wp-content/uploads/2012/02/cable-box.jpg" alt="" title="cable-box" width="640" height="273" class="aligncenter size-full wp-image-1214" /></center></p>
<p><small>Photo credit <a href="http://www.flickr.com/photos/zeusandhera/2217827798/in/photostream/">zeusandhera</a></small></p>
<p>The cable companies are, and have been, lobbying the FCC to remove this encryption ban. The FCC has a <a href="http://transition.fcc.gov/Daily_Releases/Daily_Business/2011/db1014/FCC-11-153A1.pdf">proposed plan of rule making for removing this ban on encryption</a>. The big cable providers are lobbying for this ban removal on a couple of major points:</p>
<ul>
<li>Encrypting all channels will allow them to remain &#8220;hot&#8221; at the consumer end, </li>
<li>It will reduce service technician calls because of the above,</li>
<li>It will reduce or eliminate cable theft.</li>
</ul>
<p>What they do not mention is that:</p>
<ul>
<li>You will need to buy a cable adapter (either box-top or Cablecard) for each TV in your home.</li>
</ul>
<p>The cable companies are profit driven (this is OK) and, while I admit this may reduce service calls to your home, they also have other methods of being able to deliver this service &#8220;hot&#8221; including IP-based television distribution. <strong>This is simply a cheaper way for them to use their existing technologies to maximize their profits, while maintaining a facade that they are doing this for consumers&#8217; benefit.</strong> </p>
<p>Based on my own television bill and the number of televisions that an average consumer has in their home (3), <strong>I estimate that an existing basic television consumer would receive a 92% increase to their cable bill for the same exact content</strong>. <em>(<a href="http://systembash.com/wp-content/uploads/2012/02/Comment-to-the-FCC-11-169.pdf">Source</a>)</em></p>
<h2>Fighting The Good Fight</h2>
<p>Several &#8220;new&#8221; television technology companies, such as <a href="http://boxee.tv">Boxee</a> and <a href="http://www.hauppauge.com/">Hauppauge Computer Works</a> (makers of Unencrypted QAM tuner cards) are fighting this rule change, along with the <a href="https://www.eff.org/">EFF</a>, to allow consumers to continue to receive these basic television channels in the unencrypted format. While Boxee and Hauppage have their own profit motives, they are actively working to promote new technologies to bring a variety of TV content into your home. </p>
<p><a href="http://blog.boxee.tv/2012/02/13/in-response-to-the-cable-companies-misleading-arguments-to-the-fcc/#.T0Y6G_Hy_8c">Boxee</a> and the <a href="http://apps.fcc.gov/ecfs/document/view.action?id=7021858767">National Cable &#038; Telecommunications Association</a> have been going <em>tête à tête</em> over the issue. Boxee is obviously making a play where its Boxee Box uses Unencrypted QAM to receive television stations while the NCTA represents the cable companies who want you to continue to pay your cable providers. </p>
<h2>How to Weigh In</h2>
<p>I urge all consumers of Cable TV to weigh in on the issue, but especially if you utilize Unencrypted QAM format to watch broadcast TV. The Cable Industry says that the number of consumers who use unencrypted QAM is negligible, so we need to show the FCC that we are in fact, not a negligible party to deal with. </p>
<p>The FCC is accepting comments on this proposed change to the rules. </p>
<p><a href="http://apps.fcc.gov/ecfs/comment_search/execute.action?proceeding=11-169">Here is a listing of all comments on this proposed elimination of the ban on the encryption of the basic tier of service from the FCC. </a></p>
<p>The best way is to write a short letter to the FCC. <a href="http://systembash.com/wp-content/uploads/2012/02/Comment-to-the-FCC-11-169.pdf">Here is the letter that I wrote.</a> </p>
<p>Then proceed to the <a href="http://apps.fcc.gov/ecfs/upload/display.action?z=65ox4">FCC&#8217;s page for submitting a filing</a>. For the proceeding number, use 11-169. Type in your information and attach the letter you wrote (I recommend sending as a PDF). After submitting, the FCC reviews the submission and places it on their website. </p>
<h2>Together, we can fight the cable companies</h2>
<p>The only way they know that we are not happy with this proposed rule change is by commenting on this to the organization who makes the rules, the FCC. </p>
<p>Please send them your thoughts! It should only take about 15 minutes of your time and you will feel great about participating in the rule making process. </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/systembash?a=smnCWkrUnsk:xOwZe4ZhMHI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/systembash?i=smnCWkrUnsk:xOwZe4ZhMHI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=smnCWkrUnsk:xOwZe4ZhMHI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/systembash?i=smnCWkrUnsk:xOwZe4ZhMHI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=smnCWkrUnsk:xOwZe4ZhMHI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/systembash?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=smnCWkrUnsk:xOwZe4ZhMHI:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/systembash?i=smnCWkrUnsk:xOwZe4ZhMHI:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/systembash?a=smnCWkrUnsk:xOwZe4ZhMHI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/systembash?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/systembash/~4/smnCWkrUnsk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://systembash.com/content/big-cable-wants-to-encrypt-your-basic-channels-how-to-fight-for-your-rights/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://systembash.com/content/big-cable-wants-to-encrypt-your-basic-channels-how-to-fight-for-your-rights/</feedburner:origLink></item>
	</channel>
</rss><!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Database Caching using memcached
Object Caching 2638/2691 objects using memcached

Served from: systembash.com @ 2013-05-20 16:20:07 --><!-- W3 Total Cache: Page cache debug info:
Engine:             memcached
Cache key:          w3tc_systembash.com_1_page_750978a6610fa2b4f8e13fb3a731f1b6
Caching:            enabled
Status:             not cached
Creation Time:      0.432s
Header info:
X-Powered-By:       PHP/5.3.20
Set-Cookie:         PHPSESSID=e77fd8fc125640d02e52b439fac5cc64; path=/
Expires:            Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control:      no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma:             no-cache
ETag:               "b38665ddf062d9cc1ce90504864e5782"
Last-Modified:      Thu, 09 May 2013 21:30:02 GMT
Vary:               Cookie
X-Pingback:         http://systembash.com/xmlrpc.php
Content-Type:       text/xml; charset=UTF-8
-->
