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

<channel>
	<title>diginc &#187; linux</title>
	<atom:link href="http://diginc.us/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://diginc.us</link>
	<description>\'dij-iŋk\</description>
	<lastBuildDate>Thu, 19 May 2011 14:49:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Using IPTables with Dynamic IP hostnames like dyndns.org</title>
		<link>http://diginc.us/linux/2010/using-iptables-with-dynamic-ip-hostnames-like-dyndns-org/</link>
		<comments>http://diginc.us/linux/2010/using-iptables-with-dynamic-ip-hostnames-like-dyndns-org/#comments</comments>
		<pubDate>Wed, 26 May 2010 15:51:42 +0000</pubDate>
		<dc:creator>diginc</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://diginc.us/?p=172</guid>
		<description><![CDATA[Whenever IPTables has a hostname in a rule it looks up the hostname&#8217;s IP address and uses that instead of the actual hostname &#8211; so it&#8217;s stuck with the IP until the next time IPTables is flushed/restarted. Here&#8217;s a quick &#8230; <a href="http://diginc.us/linux/2010/using-iptables-with-dynamic-ip-hostnames-like-dyndns-org/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Whenever IPTables has a hostname in a rule it looks up the hostname&#8217;s IP address and uses that instead of the actual hostname &#8211; so it&#8217;s stuck with the IP until the next time IPTables is flushed/restarted.  Here&#8217;s a quick little python script to stick in a crontab which checks the IP of your dynamic IP hostname (free ones provided by dyndns.org) and will restart iptables if it catches a change in your hostname.  The script was made for CentOS so should work on Red Hat based distributions &#8211; if you don&#8217;t have an /etc/init.d/iptables file you&#8217;ll have to modify the reload iptables command in the source.  Viewable Source After Jump</p>
<p>I just set this up as root and in root&#8217;s crontab.</p>
<p><a href="/examples/iptables_dyndns_update.py">Download Source</a></p>
<p><span id="more-172"></span></p>
<p><strong>Source:</strong></p>

<div class="wp_codebox"><table><tr id="p1723"><td class="code" id="p172code3"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/python</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> gettextoutput<span style="color: black;">&#40;</span><span style="color: #dc143c;">cmd</span><span style="color: black;">&#41;</span>:
    <span style="color: #483d8b;">&quot;&quot;&quot;Return (status, output) of executing cmd in a shell.&quot;&quot;&quot;</span>
    pipe = <span style="color: #dc143c;">os</span>.<span style="color: black;">popen</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'{ '</span> + <span style="color: #dc143c;">cmd</span> + <span style="color: #483d8b;">'; } 2&gt;&amp;1'</span>, <span style="color: #483d8b;">'r'</span><span style="color: black;">&#41;</span>
    pipe = <span style="color: #dc143c;">os</span>.<span style="color: black;">popen</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">cmd</span> + <span style="color: #483d8b;">' 2&gt;&amp;1'</span>, <span style="color: #483d8b;">'r'</span><span style="color: black;">&#41;</span>
    text = pipe.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> text<span style="color: black;">&#91;</span>-<span style="color: #ff4500;">1</span>:<span style="color: black;">&#93;</span> == <span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\n</span>'</span>: text = text<span style="color: black;">&#91;</span>:-<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> text
&nbsp;
home_dyndns = <span style="color: #483d8b;">&quot;example.dyndns.org&quot;</span>
log_dyndns = <span style="color: #483d8b;">&quot;./new_home_ip_check.log&quot;</span>
last_dyndns = gettextoutput<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;cat &quot;</span> + log_dyndns<span style="color: black;">&#41;</span>
cur_dyndns = gettextoutput<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;host &quot;</span> + home_dyndns<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Log: &quot;</span>+ last_dyndns
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Cur: &quot;</span>+ cur_dyndns
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> last_dyndns == cur_dyndns:
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;IPs match, no restart necessary&quot;</span>
<span style="color: #ff7700;font-weight:bold;">else</span>:
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Updating last IP with current&quot;</span>
    <span style="color: #dc143c;">os</span>.<span style="color: black;">system</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;echo '&quot;</span> + cur_dyndns + <span style="color: #483d8b;">&quot;' &gt; &quot;</span> + log_dyndns<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Restarting iptables to update&quot;</span>
    <span style="color: #dc143c;">os</span>.<span style="color: black;">system</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;/etc/init.d/iptables restart&quot;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p><strong>Output looks like:</strong></p>

<div class="wp_codebox"><table><tr id="p1724"><td class="code" id="p172code4"><pre class="bash" style="font-family:monospace;">Log: example.dyndns.org has address 114.76.37.112
Cur: example.dyndns.org has address 114.76.37.112
IPs match, no restart necessary
&nbsp;
Log: example.dyndns.org has address 114.76.37.113
Cur: example.dyndns.org has address 114.76.37.112
Updating <span style="color: #c20cb9; font-weight: bold;">last</span> IP with current
Restarting iptables to update
Flushing firewall rules:                                   <span style="color: #7a0874; font-weight: bold;">&#91;</span>  OK  <span style="color: #7a0874; font-weight: bold;">&#93;</span>
Setting chains to policy ACCEPT: filter                    <span style="color: #7a0874; font-weight: bold;">&#91;</span>  OK  <span style="color: #7a0874; font-weight: bold;">&#93;</span>
Unloading iptables modules:                                <span style="color: #7a0874; font-weight: bold;">&#91;</span>  OK  <span style="color: #7a0874; font-weight: bold;">&#93;</span>
Applying iptables firewall rules:                          <span style="color: #7a0874; font-weight: bold;">&#91;</span>  OK  <span style="color: #7a0874; font-weight: bold;">&#93;</span>
Loading additional iptables modules: ip_conntrack_netbios_n<span style="color: #7a0874; font-weight: bold;">&#91;</span>  OK  <span style="color: #7a0874; font-weight: bold;">&#93;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://diginc.us/linux/2010/using-iptables-with-dynamic-ip-hostnames-like-dyndns-org/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Bash Script: Confirm domains in your DNS Bind server are still pointed at your address (haven&#8217;t moved to other DNS)</title>
		<link>http://diginc.us/linux/2010/bash-script-confirm-domains-in-your-dns-bind-server-are-still-pointed-at-your-address-havent-moved-to-other-dns/</link>
		<comments>http://diginc.us/linux/2010/bash-script-confirm-domains-in-your-dns-bind-server-are-still-pointed-at-your-address-havent-moved-to-other-dns/#comments</comments>
		<pubDate>Fri, 07 May 2010 16:02:13 +0000</pubDate>
		<dc:creator>diginc</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Bind]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://diginc.us/?p=161</guid>
		<description><![CDATA[Here&#8217;s a quick script I wrote last year which I forgot about until today. I thought I should share it since it works fairly well with some modifications &#8211; it could be refined/improved quite a bit; I&#8217;m not the best &#8230; <a href="http://diginc.us/linux/2010/bash-script-confirm-domains-in-your-dns-bind-server-are-still-pointed-at-your-address-havent-moved-to-other-dns/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a quick script I wrote last year which I forgot about until today.  I thought I should share it since it works fairly well with some modifications &#8211; it could be refined/improved quite a bit; I&#8217;m not the best bash/shell scripter.  Be prepared to get your hands dirty with mods if you want to use this.  Here&#8217;s a quick run down &#038; description of what&#8217;s going on.</p>
<p>The script&#8217;s input is the bind9 file containing all zone entries you want to confirm are pointed to your server, I suggest making a copy &#8211; not working with any live configs.  The script will run an lookup using `<code>host -t ns</code>` on google&#8217;s DNS server to find out what the outside world thinks the domains&#8217; name servers are; I tried `<code>whois</code>` in the past but it was too unreliable due to timeouts &#038; limits on the number of calls per minute.  Then it checks the results of that host lookup against the hostnames, all capitalized hostnames, and IP addresses of your DNS servers (3 in my case).  If any one of the DNS servers matches than we know the domain is still using our DNS.  The other options are 1) it doesn&#8217;t find any DNS servers that are ours 2) it finds the phrase &#8216;not found&#8217; which host returns if the domain is expired or there are no &#8216;NS&#8217; type records in DNS.  The script echos to shell what DNS servers match as it runs, but it only logs the DNS servers that don&#8217;t have any matches (so they can be removed by automation or manually later).</p>
<p>With the zone-audit.log output I then can remove the domains that aren&#8217;t using our DNS since they&#8217;re no longer in use.  Please leave feedback in the comments if you think of a good improvement.</p>
<p>Code after the jump or <a href="/examples/confirm-dns-zones.php">Here</a><br />
<span id="more-161"></span></p>

<div class="wp_codebox"><table><tr id="p1616"><td class="code" id="p161code6"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #666666; font-style: italic;">#</span>
&nbsp;
<span style="color: #007800;">domains</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #660033;">-n</span> <span style="color: #ff0000;">'s/^zone\s*\&quot;\([^\&quot;]*\)\&quot;\s* {[^\r]*/\1/p'</span> <span style="color: #000000; font-weight: bold;">/</span>root<span style="color: #000000; font-weight: bold;">/</span>confirm-dns-zones<span style="color: #000000; font-weight: bold;">/</span>named.master<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #c20cb9; font-weight: bold;">date</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>root<span style="color: #000000; font-weight: bold;">/</span>confirm-dns-zones<span style="color: #000000; font-weight: bold;">/</span>zone-audit.log
&nbsp;
<span style="color: #000000; font-weight: bold;">for</span> i <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #007800;">$domains</span>
<span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Checking <span style="color: #007800;">$i</span>&quot;</span>
  <span style="color: #007800;">domain_ns</span>=<span style="color: #000000; font-weight: bold;">`</span>host <span style="color: #660033;">-t</span> ns <span style="color: #007800;">$i</span> 8.8.8.8 <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$i</span>&quot;</span><span style="color: #000000; font-weight: bold;">`</span>
  <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$domain_ns</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$domain_ns</span> =~ <span style="color: #ff0000;">'NS1.EXAMPLE'</span> <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #007800;">$domain_ns</span> =~ <span style="color: #ff0000;">'ns1.example'</span> <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #007800;">$domain_ns</span> =~ <span style="color: #ff0000;">'4.3.2.1'</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$i</span> contains DNS1 (4.3.2.1)&quot;</span>
    <span style="color: #007800;">match_dns1</span>=TRUE
  <span style="color: #000000; font-weight: bold;">else</span>
    <span style="color: #666666; font-style: italic;">#echo &quot;DNS1 NOT FOUND&quot;</span>
    <span style="color: #007800;">match_dns1</span>=FALSE
  <span style="color: #000000; font-weight: bold;">fi</span>;
&nbsp;
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$domain_ns</span> =~ <span style="color: #ff0000;">'NS2.EXAMPLE'</span> <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #007800;">$domain_ns</span> =~ <span style="color: #ff0000;">'ns2.example'</span> <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #007800;">$domain_ns</span> =~ <span style="color: #ff0000;">'4.3.2.2'</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$i</span> contains DNS2 (4.3.2.2)&quot;</span>
    <span style="color: #007800;">match_dns2</span>=TRUE
  <span style="color: #000000; font-weight: bold;">else</span>
    <span style="color: #666666; font-style: italic;">#echo &quot;DNS2 NOT FOUND&quot;</span>
    <span style="color: #007800;">match_dns2</span>=FALSE
  <span style="color: #000000; font-weight: bold;">fi</span>;
&nbsp;
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$domain_ns</span> =~ <span style="color: #ff0000;">'NS3.EXAMPLE'</span> <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #007800;">$domain_ns</span> =~ <span style="color: #ff0000;">'ns3.example'</span> <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #007800;">$domain_ns</span> =~ <span style="color: #ff0000;">'4.3.2.3'</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$i</span> contains DNS3 (4.3.2.3)&quot;</span>
    <span style="color: #007800;">match_dns3</span>=TRUE
  <span style="color: #000000; font-weight: bold;">else</span>
    <span style="color: #666666; font-style: italic;">#echo &quot;DNS3 NOT FOUND&quot;</span>
    <span style="color: #007800;">match_dns3</span>=FALSE
  <span style="color: #000000; font-weight: bold;">fi</span>;
&nbsp;
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$match_dns1</span> == FALSE <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #007800;">$match_dns2</span> == FALSE <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #007800;">$match_dns3</span> == FALSE <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
   <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;* ERROR: <span style="color: #007800;">$i</span> - None of our DNS found for this domain using 8.8.8.8&quot;</span>
   <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$i</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>root<span style="color: #000000; font-weight: bold;">/</span>confirm-dns-zones<span style="color: #000000; font-weight: bold;">/</span>zone-audit.log
  <span style="color: #000000; font-weight: bold;">fi</span>;
&nbsp;
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$domain_ns</span> =~ <span style="color: #ff0000;">'not found'</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;* Possible script error or missing DNS / Expired domain&quot;</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;* ERROR: <span style="color: #007800;">$i</span> - Possible script error or missing DNS / Expired domain&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>root<span style="color: #000000; font-weight: bold;">/</span>confirm-dns-zones<span style="color: #000000; font-weight: bold;">/</span>zone-audit.log
  <span style="color: #000000; font-weight: bold;">fi</span> 
&nbsp;
  <span style="color: #7a0874; font-weight: bold;">echo</span>
  <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;----------------&quot;</span>
  <span style="color: #7a0874; font-weight: bold;">echo</span>
  <span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">done</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://diginc.us/linux/2010/bash-script-confirm-domains-in-your-dns-bind-server-are-still-pointed-at-your-address-havent-moved-to-other-dns/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Using fail2ban to open back door ports in your iptables [Port Knocking]</title>
		<link>http://diginc.us/linux/2009/using-fail2ban-to-open-back-doors-ports-in-your-iptables/</link>
		<comments>http://diginc.us/linux/2009/using-fail2ban-to-open-back-doors-ports-in-your-iptables/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 21:38:26 +0000</pubDate>
		<dc:creator>diginc</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[auth2accept]]></category>
		<category><![CDATA[auth2allow]]></category>
		<category><![CDATA[fail2accept]]></category>
		<category><![CDATA[fail2allow]]></category>
		<category><![CDATA[fail2ban]]></category>

		<guid isPermaLink="false">http://diginc.us/?p=108</guid>
		<description><![CDATA[The opposite of fail2ban would probably be called auth2allow (authenticate to allow) or fail2allow &#8211; but that&#8217;s not necessary because fail2ban&#8217;s configs can be customized to do exactly what I&#8217;m talking about. What am I talking about you ask? Basically &#8230; <a href="http://diginc.us/linux/2009/using-fail2ban-to-open-back-doors-ports-in-your-iptables/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The opposite of <a href="http://www.fail2ban.org">fail2ban</a> would probably be called auth2allow (authenticate to allow) or fail2allow &#8211; but that&#8217;s not necessary because fail2ban&#8217;s configs can be customized to do exactly what I&#8217;m talking about.  What am I talking about you ask?  Basically what I&#8217;ve done and am about to explain how to do is setup fail2ban to look for a successful login on a FTP to allow the authenticated IP to get access to another port that isn&#8217;t as secure as FTP so is usually 100% black listed in IPTables.  It&#8217;s just a hack of a security mechanism to allow your self or others into places securely through obscure means.  Like most security it&#8217;s not perfect but it seems pretty solid in my mind.  </p>
<p>If someone can authenticate on the FTP (could even be anonymous ftp, but I&#8217;d recommend using a special username you want to specifically grant access) then fail2ban triggers an ALLOW command for their IP on some port (or all ports), for example SSH (22) or apache https (443) with a private site on it that you want to keep private and totally hidden from the internet at large.  This concept could really apply to anything.  Any command IPTables can run can be triggered through something fail2ban sees in a log file basically, the possibilities are endless.  In my example I&#8217;ll use https, port 443, but in real life I&#8217;m using an obscure port number and the program running on it that is not very secure by default.</p>
<p>So here are my slightly modified configuration files for setting up a custom fail2ban service that does the opposite of what fail2ban typically does.</p>
<p><span id="more-108"></span></p>
<p>In /etc/fail2bain/jail.conf I added:</p>

<div class="wp_codebox"><table><tr id="p10812"><td class="code" id="p108code12"><pre class="bash" style="font-family:monospace;"> <span style="color: #7a0874; font-weight: bold;">&#91;</span>vsftpd2allow443<span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
 enabled  = <span style="color: #c20cb9; font-weight: bold;">true</span>
 port     = <span style="color: #000000;">443</span>
 filter   = vsftpd-<span style="color: #000000;">2</span>-https
 banaction = iptables-accept-https
 logpath  = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>vsftpd.log
 maxretry = <span style="color: #000000;">1</span>
 bantime  = <span style="color: #660033;">-1</span></pre></td></tr></table></div>

<p>filter has to match the name of the corresponding file in the <code>/etc/fail2ban/filter.d</code> folder.  banaction has to match the corresponding file in the <code>/etc/fail2ban/action.d</code> folder.  Max retry is 1 so the person doesn&#8217;t need to successfully login to the FTP more than once to get access to our secret port back door.  Bantime -1 should add the person for ever.  For added security try <code>bantime = 86400</code> for 1 days access (bantime uses seconds).</p>
<p>Next make a copy of a default action for a template:</p>

<div class="wp_codebox"><table><tr id="p10813"><td class="code" id="p108code13"><pre class="bash" style="font-family:monospace;"> <span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-vip</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>fail2ban<span style="color: #000000; font-weight: bold;">/</span>action.d<span style="color: #000000; font-weight: bold;">/</span>iptables.conf <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>fail2ban<span style="color: #000000; font-weight: bold;">/</span>action.d<span style="color: #000000; font-weight: bold;">/</span>iptables-accept-https.conf</pre></td></tr></table></div>

<p>Then modify all the DENYs to ACCEPT and change the port:</p>

<div class="wp_codebox"><table><tr id="p10814"><td class="code" id="p108code14"><pre class="bash" style="font-family:monospace;"> actionban = iptables <span style="color: #660033;">-I</span> fail2ban-<span style="color: #000000; font-weight: bold;">&lt;</span>name<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000;">1</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">&lt;</span>ip<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #660033;">-j</span> DROP
 <span style="color: #666666; font-style: italic;"># Becomes</span>
 actionban = iptables <span style="color: #660033;">-I</span> fail2ban-<span style="color: #000000; font-weight: bold;">&lt;</span>name<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000;">1</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">&lt;</span>ip<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #660033;">-j</span> ACCEPT
&nbsp;
 actionunban = iptables <span style="color: #660033;">-D</span> fail2ban-<span style="color: #000000; font-weight: bold;">&lt;</span>name<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">&lt;</span>ip<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #660033;">-j</span> DROP
 <span style="color: #666666; font-style: italic;"># Becomes</span>
 actionunban = iptables <span style="color: #660033;">-D</span> fail2ban-<span style="color: #000000; font-weight: bold;">&lt;</span>name<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">&lt;</span>ip<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #660033;">-j</span> ACCEPT
&nbsp;
 port = <span style="color: #c20cb9; font-weight: bold;">ssh</span>
 <span style="color: #666666; font-style: italic;"># Becomes</span>
 port = <span style="color: #000000;">443</span></pre></td></tr></table></div>

<p>And lastly you need your fail2ban filter that watches vsftpd for successful authenticions of our special user who gets special ports opened up for them.  Since I&#8217;m using vsftpd as my FTP I just copied it&#8217;s current filter and modified it to look for good auths instead of bad auths.</p>

<div class="wp_codebox"><table><tr id="p10815"><td class="code" id="p108code15"><pre class="bash" style="font-family:monospace;"> <span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-vip</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>fail2ban<span style="color: #000000; font-weight: bold;">/</span>filter.d<span style="color: #000000; font-weight: bold;">/</span>vsftpd.conf <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>fail2ban<span style="color: #000000; font-weight: bold;">/</span>filter.d<span style="color: #000000; font-weight: bold;">/</span>vsftpd-<span style="color: #000000;">2</span>-accept-https.conf</pre></td></tr></table></div>

<p>Change &#8216;<code>specialuser</code>&#8216; to whatever FTP user you want to gain special access to your server.</p>

<div class="wp_codebox"><table><tr id="p10816"><td class="code" id="p108code16"><pre class="bash" style="font-family:monospace;"> failregex = vsftpd<span style="color: #7a0874; font-weight: bold;">&#40;</span>?:\<span style="color: #7a0874; font-weight: bold;">&#40;</span>pam_unix\<span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>?<span style="color: #7a0874; font-weight: bold;">&#40;</span>?:\<span style="color: #7a0874; font-weight: bold;">&#91;</span>\d+\<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>?:.<span style="color: #000000; font-weight: bold;">*</span> authentication failure; .<span style="color: #000000; font-weight: bold;">*</span> <span style="color: #007800;">rhost</span>=<span style="color: #000000; font-weight: bold;">&lt;</span>HOST<span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>?:\s+<span style="color: #007800;">user</span>=\S<span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>?\s<span style="color: #000000; font-weight: bold;">*</span>$
     \<span style="color: #7a0874; font-weight: bold;">&#91;</span>.+\<span style="color: #7a0874; font-weight: bold;">&#93;</span> FAIL LOGIN: Client <span style="color: #ff0000;">&quot;&lt;HOST&gt;&quot;</span>\s<span style="color: #000000; font-weight: bold;">*</span>$
 <span style="color: #666666; font-style: italic;"># Becomes</span>
 failregex = vsftpd<span style="color: #7a0874; font-weight: bold;">&#40;</span>?:\<span style="color: #7a0874; font-weight: bold;">&#40;</span>pam_unix\<span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>?<span style="color: #7a0874; font-weight: bold;">&#40;</span>?:\<span style="color: #7a0874; font-weight: bold;">&#91;</span>\d+\<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>?:.<span style="color: #000000; font-weight: bold;">*</span> authentication failure; .<span style="color: #000000; font-weight: bold;">*</span> <span style="color: #007800;">rhost</span>=<span style="color: #000000; font-weight: bold;">&lt;</span>HOST<span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>?:\s+<span style="color: #007800;">user</span>=\S<span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>?\s<span style="color: #000000; font-weight: bold;">*</span>$
     \<span style="color: #7a0874; font-weight: bold;">&#91;</span>specialuser\<span style="color: #7a0874; font-weight: bold;">&#93;</span> OK LOGIN: Client <span style="color: #ff0000;">&quot;&lt;HOST&gt;&quot;</span>\s<span style="color: #000000; font-weight: bold;">*</span>$</pre></td></tr></table></div>

<p>If you&#8217;re not using VFTPd then fail2ban has many other popular linux FTP client&#8217;s setup in the filter.d folder.  You should also look in your log file (<code>ls /var/log/*ftp*</code> should find it) to find out what syntax it uses to denote a successful FTP login because it will most likely be different than what VSFTPd uses.</p>
<p>Now you just need to remember the password for your <code>specialuser</code> and you just FTP to your server with that login from any computer in the world to open your hidden port to access your secret content.  This idea is mostly for personal use and I recommend against trying to have any beginner users use this as a mechanism for accessing content or even using it in a serious This slight modification isn&#8217;t revolutionary or anything and I may not be the first to come up with it but it definitely isn&#8217;t a well search indexed idea so I thought I&#8217;d throw this out there for others.</p>
]]></content:encoded>
			<wfw:commentRss>http://diginc.us/linux/2009/using-fail2ban-to-open-back-doors-ports-in-your-iptables/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My linux Quake 3 dedicated server setup notes (Ubuntu 9.04 server)</title>
		<link>http://diginc.us/linux/2009/my-linux-quake-3-dedicated-server-setup-notes-ubuntu-9-04-server/</link>
		<comments>http://diginc.us/linux/2009/my-linux-quake-3-dedicated-server-setup-notes-ubuntu-9-04-server/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 16:18:02 +0000</pubDate>
		<dc:creator>diginc</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://diginc.us/?p=93</guid>
		<description><![CDATA[Not really a tutorial, mostly notes to my self so I remember how it&#8217;s done down the road. adduser q3ds cd /home/q3ds Find linuxq3apoint-1.32b-3.x86.run, wget or upload to the q3ds user folder chmod +x linuxq3apoint-1.32b-3.x86.run ./linuxq3apoint-1.32b-3.x86.run &#160; # Returns... # &#8230; <a href="http://diginc.us/linux/2009/my-linux-quake-3-dedicated-server-setup-notes-ubuntu-9-04-server/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Not really a tutorial, mostly notes to my self so I remember how it&#8217;s done down the road.</p>
<p><span id="more-93"></span></p>

<div class="wp_codebox"><table><tr id="p9323"><td class="code" id="p93code23"><pre class="bash" style="font-family:monospace;">adduser q3ds
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>q3ds</pre></td></tr></table></div>

<p>Find <a href="http://www.google.com/search?q=linuxq3apoint-1.32b-3.x86.run">linuxq3apoint-1.32b-3.x86.run</a>, wget or upload to the q3ds user folder</p>

<div class="wp_codebox"><table><tr id="p9324"><td class="code" id="p93code24"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">chmod</span> +x linuxq3apoint-1.32b-<span style="color: #000000;">3</span>.x86.run
.<span style="color: #000000; font-weight: bold;">/</span>linuxq3apoint-1.32b-<span style="color: #000000;">3</span>.x86.run
&nbsp;
<span style="color: #666666; font-style: italic;"># Returns...</span>
<span style="color: #666666; font-style: italic;"># Verifying archive integrity...tail: cannot open `+6' for reading: No such file or directory</span>
<span style="color: #666666; font-style: italic;"># Error in check sums 579851737 212141158</span>
<span style="color: #666666; font-style: italic;"># This should fix that error: </span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">_POSIX2_VERSION</span>=<span style="color: #000000;">199209</span>
.<span style="color: #000000; font-weight: bold;">/</span>linuxq3apoint-<span style="color: #000000;">1.31</span>.x86.run 
&nbsp;
<span style="color: #666666; font-style: italic;"># Returns...</span>
<span style="color: #666666; font-style: italic;"># Verifying archive integrity...OK</span>
<span style="color: #666666; font-style: italic;"># Uncompressing Quake III Arena Point Release 1.31 ..................................................................</span>
<span style="color: #666666; font-style: italic;"># This installation doesn't support glibc-2.0 on Linux / x86_64</span>
<span style="color: #666666; font-style: italic;"># Please contact Id software technical support at bugs@idsoftware.com</span>
<span style="color: #666666; font-style: italic;"># The program returned an error code (1)</span>
<span style="color: #666666; font-style: italic;"># OK, time for another fix:</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> ia32-libs linux32
<span style="color: #666666; font-style: italic;"># ... press Y &lt;enter&gt; to confirm install</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Try again with 32bit emulation</span>
&nbsp;
linux32 .<span style="color: #000000; font-weight: bold;">/</span>linuxq3apoint-<span style="color: #000000;">1.31</span>.x86.run 
&nbsp;
<span style="color: #666666; font-style: italic;"># Go through the install and change the install path to /home/q3ds/quake3/</span></pre></td></tr></table></div>

<p>Copy/FTP baseq3/pak0.pk3 off our CD or backup into your /home/q3ds/quake3/baseq3 folder.</p>
<p>These are my console screens for running q3ded behind the scenes, they&#8217;re setup for my mod of choice &#8211; <a href="http://weaponsfactory.planetquake.gamespy.com/Quake3/">WFA</a> (whose install files are located @ <a href="http://bitblender.net">bitblender.net</a>:</p>
<p>q3start:</p>

<div class="wp_codebox"><table><tr id="p9325"><td class="code" id="p93code25"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Starting WFA Server&quot;</span>
<span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">1</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>q3ds<span style="color: #000000; font-weight: bold;">/</span>quake3
<span style="color: #c20cb9; font-weight: bold;">screen</span> <span style="color: #660033;">-L</span> <span style="color: #660033;">-A</span> <span style="color: #660033;">-m</span> <span style="color: #660033;">-d</span> <span style="color: #660033;">-S</span> wfa-server .<span style="color: #000000; font-weight: bold;">/</span>q3ded +<span style="color: #000000; font-weight: bold;">set</span> fs_game wfa +<span style="color: #000000; font-weight: bold;">set</span> dedicated  <span style="color: #000000;">2</span> +<span style="color: #000000; font-weight: bold;">set</span> sv_pure <span style="color: #000000;">0</span> +<span style="color: #000000; font-weight: bold;">set</span> gametype <span style="color: #000000;">4</span> +<span style="color: #7a0874; font-weight: bold;">exec</span> wfa-server.cfg</pre></td></tr></table></div>

<p>q3stop:</p>

<div class="wp_codebox"><table><tr id="p9326"><td class="code" id="p93code26"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #c20cb9; font-weight: bold;">screen</span> <span style="color: #660033;">-dr</span> wfa-server <span style="color: #660033;">-X</span> quit
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Killing off wfa-server...&quot;</span>;</pre></td></tr></table></div>

<p>q3restart:</p>

<div class="wp_codebox"><table><tr id="p9327"><td class="code" id="p93code27"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Restarting WFA Server&quot;</span>
<span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>q3ds<span style="color: #000000; font-weight: bold;">/</span>scripts<span style="color: #000000; font-weight: bold;">/</span>q3stop
<span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>q3ds<span style="color: #000000; font-weight: bold;">/</span>scripts<span style="color: #000000; font-weight: bold;">/</span>q3start</pre></td></tr></table></div>

<p>q3console (ctrl+A+D to detach from console):</p>

<div class="wp_codebox"><table><tr id="p9328"><td class="code" id="p93code28"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">screen</span> <span style="color: #660033;">-x</span> wfa-server</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://diginc.us/linux/2009/my-linux-quake-3-dedicated-server-setup-notes-ubuntu-9-04-server/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>GNUmp3d init.d with PIDs for running multiple instances of GNUmp3d</title>
		<link>http://diginc.us/linux/2009/gnump3d-init-d-with-pids-for-running-multiple-instances-of-gnump3d/</link>
		<comments>http://diginc.us/linux/2009/gnump3d-init-d-with-pids-for-running-multiple-instances-of-gnump3d/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 05:07:15 +0000</pubDate>
		<dc:creator>diginc</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[gnump3d]]></category>
		<category><![CDATA[init.d]]></category>
		<category><![CDATA[invoke-rc.d]]></category>
		<category><![CDATA[service]]></category>

		<guid isPermaLink="false">http://diginc.us/?p=73</guid>
		<description><![CDATA[I made some modifications to my original gnump3d init.d script when I needed more than one instance of GNUmp3d running (for multiple folders completely separated). I still haven&#8217;t quite figured out how to get the tag database to work for &#8230; <a href="http://diginc.us/linux/2009/gnump3d-init-d-with-pids-for-running-multiple-instances-of-gnump3d/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I made some modifications to my original gnump3d init.d script when I needed more than one instance of GNUmp3d running (for multiple folders completely separated).  I still haven&#8217;t quite figured out how to get the tag database to work for my second GNUmp3d instance, if anyone can help please leave a comment.  Here&#8217;s the script and some brief instructions:</p>
<p><span id="more-73"></span></p>
<p>/etc/init.d/gnump3d :</p>

<div class="wp_codebox"><table><tr id="p7336"><td class="code" id="p73code36"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #007800;">gmconfig</span>=<span style="color: #ff0000;">&quot;/etc/gnump3d/gnump3d.conf&quot;</span>
<span style="color: #007800;">gmport</span>=<span style="color: #ff0000;">&quot;54321&quot;</span>
<span style="color: #007800;">gmpidfile</span>=<span style="color: #ff0000;">&quot;/var/run/gnump3d_<span style="color: #007800;">$gmport</span>.pid&quot;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #ff0000;">&quot;$1&quot;</span> <span style="color: #000000; font-weight: bold;">in</span>
start<span style="color: #7a0874; font-weight: bold;">&#41;</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #007800;">$gmpidfile</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> ; <span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;GNUmp3d already running on port <span style="color: #007800;">$gmport</span>&quot;</span>
  <span style="color: #000000; font-weight: bold;">else</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Starting GNUmp3d.&quot;</span>
    <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>gnump3d <span style="color: #660033;">--background</span> <span style="color: #660033;">-config</span> <span style="color: #007800;">$gmconfig</span> <span style="color: #660033;">--port</span> <span style="color: #007800;">$gmport</span>
    <span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">1</span>
    <span style="color: #c20cb9; font-weight: bold;">ps</span> <span style="color: #660033;">-ef</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-v</span> <span style="color: #ff0000;">&quot;grep&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;config <span style="color: #007800;">$gmconfig</span>&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">cut</span> <span style="color: #660033;">-c10-15</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$gmpidfile</span>
  <span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">;;</span>
stop<span style="color: #7a0874; font-weight: bold;">&#41;</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #007800;">$gmpidfile</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> ; <span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Shutting down GNUmp3d.&quot;</span>
    <span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">kill</span> <span style="color: #660033;">-9</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #007800;">$gmpidfile</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
    <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #007800;">$gmpidfile</span>
  <span style="color: #000000; font-weight: bold;">else</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;GNUmp3d isn't running on port <span style="color: #007800;">$gmport</span> yet&quot;</span>
  <span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">;;</span>
restart<span style="color: #7a0874; font-weight: bold;">&#41;</span>
  <span style="color: #007800;">$0</span> stop
  <span style="color: #007800;">$0</span> start
<span style="color: #000000; font-weight: bold;">;;</span>
status<span style="color: #7a0874; font-weight: bold;">&#41;</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #007800;">$gmpidfile</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> ; <span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;GNUmp3d running on port <span style="color: #007800;">$gmport</span> with config <span style="color: #007800;">$gmconfig</span> and pid <span style="color: #007800;">$(cat $gmpidfile)</span>&quot;</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">ps</span> <span style="color: #660033;">-ef</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-v</span> <span style="color: #ff0000;">&quot;grep&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;config <span style="color: #007800;">$gmconfig</span>&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
    <span style="color: #666666; font-style: italic;">#echo</span>
    <span style="color: #666666; font-style: italic;"># code to display the other instance of gnump3d here...</span>
  <span style="color: #000000; font-weight: bold;">else</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;GNUmp3d isn't running yet&quot;</span>
  <span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">;;</span>
<span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Usage: $0 {start|stop|restart|status}&quot;</span>
  <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">esac</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span></pre></td></tr></table></div>

<p>To run more than one copy of gnump3d with this simply make a copy of this script and call it something like gnump3d_2.</p>

<div class="wp_codebox"><table><tr id="p7337"><td class="code" id="p73code37"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-vip</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>gnump3d <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>gnump3d_2</pre></td></tr></table></div>

<p>Then change the new init.d script to point to your new config and port (pid file auto updates by port #).</p>

<div class="wp_codebox"><table><tr id="p7338"><td class="code" id="p73code38"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">gmconfig</span>=<span style="color: #ff0000;">&quot;/etc/gnump3d/gnump3d_2.conf&quot;</span>
<span style="color: #007800;">gmport</span>=<span style="color: #ff0000;">&quot;54322&quot;</span></pre></td></tr></table></div>

<p>Make a copy of the stock gnump3d config and modify the necessary lines.</p>

<div class="wp_codebox"><table><tr id="p7339"><td class="code" id="p73code39"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-vip</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>gnump3d<span style="color: #000000; font-weight: bold;">/</span>gnump3d.conf <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>gnump3d<span style="color: #000000; font-weight: bold;">/</span>gnump3d_2.conf</pre></td></tr></table></div>

<p>In my config I modified these lines:</p>

<div class="wp_codebox"><table><tr id="p7340"><td class="code" id="p73code40"><pre class="bash" style="font-family:monospace;">port = <span style="color: #000000;">54322</span>
root = <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>gnump3d_2
user = gnump3d_2
logfile = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>gnump3d<span style="color: #000000; font-weight: bold;">/</span>access_2.log
errorlog = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>gnump3d<span style="color: #000000; font-weight: bold;">/</span>error_2.log
now_playing_path = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span>gnump3d_2<span style="color: #000000; font-weight: bold;">/</span>serving
tag_cache = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span>gnump3d_2<span style="color: #000000; font-weight: bold;">/</span>song.tags</pre></td></tr></table></div>

<p>And lastly we&#8217;ll need to make the cache drectories:</p>

<div class="wp_codebox"><table><tr id="p7341"><td class="code" id="p73code41"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span>gnump3d_2<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span>gnump3d_2<span style="color: #000000; font-weight: bold;">/</span>serving
<span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #660033;">-R</span> <span style="color: #000000;">777</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span>gnump3d_2
<span style="color: #c20cb9; font-weight: bold;">touch</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span>gnump3d_2<span style="color: #000000; font-weight: bold;">/</span>song.tags</pre></td></tr></table></div>

<p>And then you&#8217;re set to startup the second gnump3d instance.</p>

<div class="wp_codebox"><table><tr id="p7342"><td class="code" id="p73code42"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>gnump3d_2 start</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://diginc.us/linux/2009/gnump3d-init-d-with-pids-for-running-multiple-instances-of-gnump3d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MRTG Indexmaker Interface + Description</title>
		<link>http://diginc.us/linux/2009/mrtg-indexmaker-interface-description/</link>
		<comments>http://diginc.us/linux/2009/mrtg-indexmaker-interface-description/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 23:26:59 +0000</pubDate>
		<dc:creator>diginc</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://diginc.us/uncategorized/mrtg-indexmaker-interface-description/</guid>
		<description><![CDATA[I like to have interfaces and description, not one or the other. So I do this. Use your favorite editor to open indexmaker: vi /usr/bin/indexmaker Find this part: for &#40;$$opt&#123;section&#125;&#41; &#123; # ...Skip ahead to descr... /^descr&#40;iption&#41;?$/ &#38;&#38; do&#123; $section &#8230; <a href="http://diginc.us/linux/2009/mrtg-indexmaker-interface-description/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I like to have interfaces and description, not one or the other.  So I do this.  Use your favorite editor to open indexmaker: <code>vi /usr/bin/indexmaker</code></p>
<p>Find this part:</p>

<div class="wp_codebox"><table><tr id="p4644"><td class="code" id="p46code44"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">for</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>$<span style="color: #007800;">$opt</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>section<span style="color: #7a0874; font-weight: bold;">&#125;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
<span style="color: #666666; font-style: italic;">#    ...Skip ahead to descr...</span>
            <span style="color: #000000; font-weight: bold;">/</span>^descr<span style="color: #7a0874; font-weight: bold;">&#40;</span>iption<span style="color: #7a0874; font-weight: bold;">&#41;</span>?$<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span>
              <span style="color: #000000; font-weight: bold;">do</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>
                  <span style="color: #007800;">$section</span> = <span style="color: #ff0000;">&quot;No Description for <span style="color: #007800;">$item</span>&quot;</span>;
                  $<span style="color: #007800;">$rcfg</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>setenv<span style="color: #7a0874; font-weight: bold;">&#125;</span><span style="color: #7a0874; font-weight: bold;">&#123;</span><span style="color: #007800;">$item</span><span style="color: #7a0874; font-weight: bold;">&#125;</span> =~ <span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">MRTG_INT_DESCR</span>=<span style="color: #ff0000;">&quot;(.+?)&quot;</span><span style="color: #000000; font-weight: bold;">/</span>  <span style="color: #666666; font-style: italic;">#&quot;</span>
                        and <span style="color: #007800;">$section</span> = <span style="color: #007800;">$1</span>;
                  $<span style="color: #007800;">$rcfg</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>pagetop<span style="color: #7a0874; font-weight: bold;">&#125;</span><span style="color: #7a0874; font-weight: bold;">&#123;</span><span style="color: #007800;">$item</span><span style="color: #7a0874; font-weight: bold;">&#125;</span> =~
                          m,<span style="color: #000000; font-weight: bold;">&amp;</span>lt;td<span style="color: #000000; font-weight: bold;">&gt;</span>Description:<span style="color: #000000; font-weight: bold;">&amp;</span>lt;<span style="color: #000000; font-weight: bold;">/</span>td<span style="color: #000000; font-weight: bold;">&amp;</span>gt;\s<span style="color: #000000; font-weight: bold;">*&amp;</span>lt;td<span style="color: #000000; font-weight: bold;">&amp;</span>gt;\Q<span style="color: #007800;">$section</span>\E\s<span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>^<span style="color: #000000; font-weight: bold;">&amp;</span>lt; <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>^<span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #7a0874; font-weight: bold;">&#93;</span>+?<span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #000000; font-weight: bold;">&lt;/</span>td<span style="color: #000000; font-weight: bold;">&gt;</span>,i
                        and <span style="color: #007800;">$section</span> = <span style="color: #007800;">$1</span>;
                  <span style="color: #c20cb9; font-weight: bold;">last</span>;
              <span style="color: #7a0874; font-weight: bold;">&#125;</span>;</pre></td></tr></table></div>

<p>The first `<code>and $section = $1;</code>` is a catch all to assign the interface name if there&#8217;s no description.  The second one overwrites it, replacing the int name if it does find a description.  So all you need to do is modify the second instance of `<code>and $section = $1;</code>`  to:</p>
<p><code>and $section = $section . " - " . $1;</code></p>
<p>And your MRTG index is infinitely improved!</p>
]]></content:encoded>
			<wfw:commentRss>http://diginc.us/linux/2009/mrtg-indexmaker-interface-description/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Setting up my HDTV HTPC with xUbuntu 8.10</title>
		<link>http://diginc.us/linux/2009/setting-up-my-hdtv-htpc-with-xubuntu-810/</link>
		<comments>http://diginc.us/linux/2009/setting-up-my-hdtv-htpc-with-xubuntu-810/#comments</comments>
		<pubDate>Sat, 17 Jan 2009 23:36:26 +0000</pubDate>
		<dc:creator>diginc</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[hdtv]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://diginc.us/?p=3</guid>
		<description><![CDATA[Here my chronicle of fixes and tasks I had to go through while setting up my HDTV HTPC / home server. I upgraded from an older xUbuntu to xUbuntu 8.10 64-bit and the first thing I had to do is &#8230; <a href="http://diginc.us/linux/2009/setting-up-my-hdtv-htpc-with-xubuntu-810/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Here my chronicle of fixes and tasks I had to go through while setting up my HDTV HTPC / home server.</p>
<p>I upgraded from an older xUbuntu to xUbuntu 8.10 64-bit and the first thing I had to do is restore the windows file share where I backed up configurations, samba shares, and my Adaptec SATA Raid 1210SA.  Then I had to conquer ATI&#8217;s proprietary drivers and restore my previous install&#8217;s server functionality.  Next time I&#8217;ll be finishing up the HTPC portion by configuring my TV Tuner with mythTV and installing Boxee as well &#8211; and maybe integrating the two together if possible.<br />
<span id="more-3"></span></p>
<p>Note: you can copy paste the code commands with the &#8220;<code># comments</code>&#8221; at the end because Linux will ignore everything after the #</p>
<p><b>Network Shares and Raid</b><br />
<code><br />
apt-get install samba # for sharing my raid storage across the network<br />
apt-get install smbfs # for mount.cifs to mount windows file shares<br />
apt-get install nfs-common # for the other mount types<br />
apt-get install dmraid # for my Adaptec SATA 1210SA Raid card (x2 320GB drives)<br />
apt-get install vim # because vi drives you insane after using vim<br />
</code></p>
<p>With the right programs installed I could reach my backups, test/setup my mounts permanently, and setup samba so I can start listening to my music right away again.<br />
<code><br />
mkdir /media/a-computer; mkdir /media/a-computer/backup # make a folder to mount to<br />
mount.cifs //192.168.0.51/backup /media/a-computer/backup -o guest,rw # mount my windows backups share<br />
tail -3 /media/a-computer/backup/fstab  >> /etc/fstab  # copy old fstab permanent mounts to new fstab<br />
</code><code><br />
tail -3 /media/a-computer/backup/fstab # outputs<br />
/dev/mapper/asr_1 /media/windows ntfs rw        0 0<br />
//192.168.0.51/usenet /media/a-computer/usenet cifs guest,rw,mand 0 0<br />
</code></p>
<p><b>Video Setup</b></p>
<p>I&#8217;m plugged into my Panasonic Viera 42&#8243; HDTV through an ATI HD2600XT and DVI-I to HDMI cable (from <a href="http://www.monoprice.com">monoprice</a>).  After installing xUbuntu 8.10 on a CRT Monitor (so I could read the text) I switched video cables and plugged in my HDTV only.  It booted into X with VESA drivers on &#8220;Default&#8221; resolution (not sure what res.,it wasn&#8217;t HD, but it worked on my TV somehow) and first thing that was obviously needing fixed is the text was too small to read.  </p>
<p>I quickly remembered you can&#8217;t fix the font size problems high resolutions in the XFCE menus.  You have to make a config change for X:<br />
<code>echo "Xft.dpi: 96" >> ~/.config/xfce4/Xft.xrdb</code></p>
<p>To install the video drivers I decided to just go through the menus instead of attempting it through command line (if you need to use apt-get I believe you need to manually add the proprietary apt-get rep source).  I went to Applications > System > Hardware Drivers > And There were ATI/AMD Proprietary drivers &#8211; after one click it launched the package manager and installed fglrx for me, very painless.  I also ran updates and rebooted at this time.</p>
<p>I had some issues with the fglrx video driver at first but to make a long story short, here&#8217;s how I finally got a good xorg.conf for it.<br />
<code><br />
dpkg-reconfigure xserver-xorg # This helped the next step make a more complete config<br />
aticonfig --initial # Before I ran the above step, this generated a very minimual xorg.conf<br />
aticonfig --resolution=0,1920x1080,1280x720 # Set my HDTV resolutions<br />
service gdm restart # Restart X and test new xorg.conf - booted into 1920x1080 for me<br />
</code></p>
<p>Being in 1080p resolution caused fonts to look a lot smaller, even with the xfce font DPI fix, so I increased font sizes in the menus: Applications > Settings > Settings Manager > User Interface &#038; Windows Manager.  I also increased the Panel sizes to 41 to make Icons bigger.  </p>
<p>Switching to fglrx enabled HD resolutions but it also gave me black bars around my screen.  To fix this at first I was trying to utilize the aticonfig&#8217;s overscan tv functions since I&#8217;m using a TV.  however my display isn&#8217;t detected as a &#8220;TV&#8221; type for whatever reason, as this shows:<br />
<code># aticonfig --query-monitor<br />
Connected monitors: tmds1<br />
Enabled monitors: tmds1</code><code><br />
aticonfig --tv-info<br />
The TV is not connected<br />
The TV geometry is "0x0+0+0"<br />
</code></p>
<p>After a lot of Googling and experimenting with various aticonfig commands I came to this solution: <code>aticonfig --set-pcs-val=MCIL,DigitalHDTVDefaultUnderscan,0</code> &#8211; This fixed my underscan black bars but isntead created an overscan problem (screen was bigger than TV borders).  I managed to fix this by tweaking the resolution (not sure if this causes pixel stretching but it doesn&#8217;t look bad &#8211; may just be a work around).  Here&#8217;s my overscan fix autostart script which lowers my resolution and bump the screen into center position:<br />
<code>#!/bin/bash<br />
# Add this script to autostarting apps, these commands don't seem to save<br />
aticonfig --set-pcs-val=MCIL,DigitalHDTVDefaultUnderscan,0<br />
# X was over by 28 pixels on each side (1920 normal)<br />
aticonfig --set-dispattrib=tmds1,sizeX:1866<br />
aticonfig --set-dispattrib=tmds1,positionX:+28<br />
# Y was over by 16 pixels on each side (1080 normal)<br />
aticonfig --set-dispattrib=tmds1,sizeY:1048<br />
aticonfig --set-dispattrib=tmds1,positionY:+16<br />
</code><br />
X/Y overscan values needing adjustment may be different for you</p>
<p><b>Diversion 001</b><br />
With my video completely setup I needed to test it out:<br />
<code>sudo apt-get install vlc</code><br />
I checked out some videos, normal video started skipping, HDVideos were artifacting, skipping, and top showed them taking over 50% of my CPU most of the time&#8230;that&#8217;s not right, never had this problem on my previous installs (windows XP or xubuntu 8.04).  Investigation revealed my CPU frequency is set to the minimum of 1000mhz of 2200mhz max.  Google revealed an application I hadn&#8217;t heard of before that was quite easy to use and fixed this problem:<br />
<code>apt-get install cpufrequtils<br />
cpufreq-set -g performance # Sets frequency to max</code></p>
<p>I thought that was very odd, maybe a bug with Intrepid Ibex?</p>
<p><b>Torrents, usenet/Sabnzbd, and GNUMp3D</b></p>
<p>Next I setup my uTorrent webui to act as a central torrent server for my home.  If you need instructions on setting up webui see <a href="http://forum.utorrent.com/viewtopic.php?id=14565">uTorrent&#8217;s webui post</a>.  I already set it up in wine previously so I&#8217;m just restoring from a backup here: </p>
<p><code>sudo apt-get isntall wine # We need wine to run uTorrent<br />
cp -vip /media/a-computer/backup/uTorrent.exe .~/wine/drive_c/Program\ Files/uTorrent/  # Get the exe<br />
rsync -aP /media/a-computer/backup/adam/.wine/drive_c/windows/profiles/adam/Application\ Data/uTorrent/ ~/.wine/drive_c/windows/profiles/adam/Application\ Data/uTorrent/ # I need the app data folder where webui is saved<br />
cp -vip root/startup-uTorrent.sh /home/adam # Copy my startup script<br />
cat /home/adam/startup-uTorrent.sh # It's a simple script needed for auto start on boot<br />
#!/bin/sh<br />
wine /home/adam/.wine/drive_c/Program\ Files/uTorrent/uTorrent.exe &#038;<br />
</code></p>
<p>Then I add the script to the startup applications list through Applications > Settings > Settings Managed > Autostarted apps > Add > Then Enter a description and the path /home/adam/startup-uTorrent.sh</p>
<p>References:</p>
<p>http://ubuntuforums.org/showthread.php?t=225721</p>
<p>http://www.phoronix.com/forums/showthread.php?p=36734#post36734</p>
<p>http://ubuntuforums.org/showthread.php?p=5842624</p>
<p>http://www.thinkwiki.org/wiki/How_to_use_cpufrequtils</p>
<p>Brain</p>
]]></content:encoded>
			<wfw:commentRss>http://diginc.us/linux/2009/setting-up-my-hdtv-htpc-with-xubuntu-810/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Served from: diginc.us @ 2012-02-06 00:48:35 -->
