<?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>[protofusion] &#187; Linux</title> <atom:link href="http://protofusion.org/wordpress/category/linux/feed/" rel="self" type="application/rss+xml" /><link>http://protofusion.org/wordpress</link> <description>Generally Interesting</description> <lastBuildDate>Sat, 19 May 2012 17:48:20 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.2</generator> <item><title>Configuring BOPM for TorDNSEL</title><link>http://protofusion.org/wordpress/2012/02/configuring-bopm-for-tordnsel/</link> <comments>http://protofusion.org/wordpress/2012/02/configuring-bopm-for-tordnsel/#comments</comments> <pubDate>Sat, 18 Feb 2012 07:32:40 +0000</pubDate> <dc:creator>Nathan Phillip Brink</dc:creator> <category><![CDATA[Linux]]></category> <category><![CDATA[Quick Tips]]></category> <category><![CDATA[Technology]]></category> <category><![CDATA[bopm]]></category> <category><![CDATA[dnsbl]]></category> <category><![CDATA[irc]]></category> <category><![CDATA[ircd]]></category> <category><![CDATA[tor]]></category> <category><![CDATA[tordnsel]]></category> <category><![CDATA[unrealircd]]></category><guid
isPermaLink="false">http://protofusion.org/wordpress/?p=1187</guid> <description><![CDATA[Background If you have a working BOPM installation, you are trying to prevent abuses of your IRC network effected through ]]></description> <content:encoded><![CDATA[<p><a
href="http://cdn.ohnopub.net/cdn/binki/21224-processed-r1.jpg" rel="lightbox[1187]"><img
src="http://cdn.ohnopub.net/cdn/binki/21224-processed-r1-500x382.jpg" alt="" title="Hammer hits onion—Bop 'em Tor users!" class="alignnone size-large" style="width: 500px; height: 382px;" /></a></p><h3>Background</h3><p>If you have a working <a
href="http://wiki.blitzed.org/BOPM">BOPM</a> installation, you are trying to prevent abuses of your IRC network effected through anonymity services such as proxies. BOPM has built-in support for scanning for open proxies. It also has support for looking up clients in DNSBLs, which are used to publish lists of misbehaving or malign hosts. One such DNSBL, called <a
href="https://torproject.org/projects/tordnsel.html">TorDNSEL</a>, provides a way to check users connecting through the Tor anonymity service.</p><p><span
id="more-1187"></span></p><p>As discussed at <a
href="https://torproject.org/projects/tordnsel.html">TorDNSEL&#8217;s information page</a>, the purpose of this service is to provide finely-grained information about whether a client&#8217;s connection could be through a Tor exit node. Tor exit nodes can be configured with advanced <a
href="https://torproject.org/docs/faq.html#ExitPolicies">exit policies</a> which specify the sorts of direct outbound connections a Tor exit node is willing to make on behalf of its anonymous client. For example, a Tor exit node administrator could disallow his node to make connections to government sites and disable outgoing connections on common IRC ports. If a Tor exit node is run by an administrator who is interested in also connecting to an IRC network, that administrator would disallow outgoing IRC connections. Thus, any IRC connection made (on a common IRC port) through that node would be a legitimate connection made by a user on that host and <em>not</em> a connection from an anonymous client. The TorDNSEL DNSBL lets—and requires—networks which use it to take this into account.</p><h3>Prerequisites</h3><p>This short guide assumes that you have successfully configured BOPM to connect to your IRCd, parse oper notices informing it of client connections, and issue a G/Z:line or SHUN for some other event which identifies a client as using a particular anonymity service.</p><h3>Configuring BOPM</h3><p>As <a
href="https://torproject.org/projects/tordnsel.html">TorDNSEL&#8217;s information page</a> documents, performing a TorDNSEL lookup requires the IRC client&#8217;s IP <code>A.B.C.D</code>, the port of the service being accessed <code>P</code>, and the public IP of the IRCd <code>E.F.G.H</code>. With these parameters, a query would be an <em>A record</em> lookup of the domain name <code>D.C.B.A.P.H.G.F.E.ip-port.exitlist.torproject.org</code>. If the response was <code>NXDOMAIN</code>, then either there is no Tor exit node at <code>A.B.C.D</code> <em>or</em>, if that IP identifies an exit node, that node is unwilling to connect to <code>E.F.G.H</code> on port <code>P</code> because its <a
href="https://torproject.org/docs/faq.html#ExitPolicies">exit policy</a> forbids such a connection. If the response is <code>127.0.0.2</code>, then there <em>is</em> a Tor exit node at <code>A.B.C.D</code> which would willying connect to <code>E.F.G.H</code> on port <code>P</code>. From this information, we can produce a BOPM blacklist block:</p><pre><code>OPM { <em title="Other blacklist blocks might be found here.">…</em> blacklist { name = "P.H.G.F.E.ip-port.exitlist.torproject.org"; type = "A record reply"; reply { 2 = "Tor exit server"; }; ban_unknown = yes; # GZLINE issuing a 7-day network-wide zline with <a href="http://unrealircd.org/">UnrealIRCd</a>-compatible syntax kline = "GZLINE *@%i 7d :You are connecting from a Tor exit node willing to connect to E.F.G.H:P"; }; <em title="Other blacklist blocks would be found here.">…</em> }; </code></pre><p>The above <code>blacklist</code> should be copy-pastable into your <code>bopm.conf</code>&#8216;s <code>OPM</code> section. But, remember to replace <code>E</code>, <code>F</code>, <code>G</code>, and <code>H</code> with the respective components of your IRCd&#8217;s IP address. In the <code>name</code> line, it is intended that the components of the IP are in reverse order. This is because the right end of a domain is more general and the left end is more specific whereas in the first component of an IP address is most general and the rightmost component is more specific.</p><p>Also, note that you shouldn&#8217;t copy the <code><em>…</em></code> into your <code>bopm.conf</code>; each of these is just a placeholder indicating that you probably already have other <code>blacklist</code> blocks which should be preserved defined inside the <code>OPM</code> block.</p><p>One last note about this blacklist entry. If your IRC network, like many networks, allows connections to multiple ports, you must specify a <code>blacklist</code> entry for each port. For example, 6667 is the port an IRC client will try, by default, to use when connecting to an IRCd. But if a client wants to use SSL (without STARTTLS), you might have instructed your IRCd to listen for SSL connections on port 6697. A side effect of TorDNSEL&#8217;s specific entries is that a tor exit node may be instructed to deny outbound connections on port 6667 yet allow them on 6697. Since BOPM cannot (AFAIK) be configured to automatically choose a value for <code>P</code>, you must create a <code>blacklist</code> block for <em>each IRCd public IP and port combination</em>.</p><h4>Breakdown</h4><pre><code>OPM { <em title="Other blacklist blocks might be found here.">…</em> blacklist { name = "P.H.G.F.E.ip-port.exitlist.torproject.org";</code></pre><p>Here you specify your server&#8217;s public IP, <code>E.F.G.H</code>, in reverse as <code>H.G.F.E</code> as well as the port your IRCd is listening on, <code>P</code>. BOPM will prepend the IP of the IRC client which connects, <code>A.B.C.D</code>, in reverse order as <code>D.C.B.A</code> when it checks if the client is in this TorDNSEL.</p><pre><code> type = "A record reply";</code></pre><p>This specifies that BOMP should take the IP address the DNSBL returns and interpret that as a response. DNSBLs generally use IPs in the reserved localhost range, <code>127.0.0.0/8</code>, to avoid pointing to IPs owned by third parties.</p><pre><code> reply { 2 = "Tor exit server"; };</code></pre><p>This is the list of potential DNSBL responses which you anticipate from <a
href="https://torproject.org/projects/tordnsel.html">TorDNSEL</a>. If the DNSBL returns <code>NXDOMAIN</code> (which means, “I don&#8217;t know about this doain”), BOPM will ignore the answer and assume the client is not in the DNSBL. However, if the server responds with an IP such as <code>127.0.0.2</code>, BOPM will subtract <code>127.0.0.0</code> from the IP and then look for the result <code>2</code> in this reply list. If it finds an entry, it performs the action in <code>kline</code> discussed below.</p><p><a
href="https://torproject.org/projects/tordnsel.html">TorDNSEL</a> currently only defines two possible responses. <code>NXDOMAIN</code> indicates that the node would not connect to <code>E.F.G.H:P</code> on behalf of a Tor client. <code>127.0.0.2</code> or, as BOPM interprets it, <code>2</code> indicates that there is a Tor exit node at <code>A.B.C.D</code> which is willing to connect to your IRCd.</p><pre><code> ban_unknown = yes;</code></pre><p>This line states that, if the DNSBL responds with an IP other than those handled in the <code>reply</code> block, it should assume that the client still should be banned. The <a
href="https://torproject.org/projects/tordnsel.html">TorDNSEL guide</a> states <q
cite="https://torproject.org/projects/tordnsel.html">Other A records inside net 127/8, except 127.0.0.1, are reserved for future use and should be interpreted by clients as indicating an exit node.</q> This means that the TorDNSEL project reserves the right to add a new response, such as <code>127.0.0.3</code>, which would indicate a subtly different sort of tor exit node. Until this new response is defined, all we know is that the IRC client probably should be banned by BOPM.</p><pre><code> # GZLINE issuing a 7-day network-wide zline with <a href="http://unrealircd.org/">UnrealIRCd</a>-compatible syntax kline = "GZLINE *@%i 7d :You are connecting from a Tor exit node willing to connect to E.F.G.H:P";</code></pre><p>This is the IRC command which BOPM will issue when a client is listed in TorDNSEL. The above command will set a network-wide ban on the user&#8217;s IP which will last for 7 days using <a
href="http://unrealircd.org/">UnrealIRCd</a>&#8216;s syntax. A Global Z:Line is an efficient ban as the client&#8217;s connection can be closed by the IRCd before the IRCd looks up the client&#8217;s hostname. The reason listed with the GZ:Line is formulated so that the IRC user will understand exactly why he was banned.</p><pre><code> }; <em title="Other blacklist blocks would be found here.">…</em> }; </code></pre><p>Be careful when editing your bopm.conf. Don&#8217;t forget any semicolons; even the ones after closing curly braces (<code>}</code>) are ncessary. If you&#8217;re reading this guide, you hopefully don&#8217;t need this advice <img
src='http://pf-wordpress.s3.amazonaws.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p><h3>Testing</h3><p>Once you have added the necessary configuration directives to your <code>bopm.conf</code>, you should test and check that BOPM catches the Tor exit nodes which are willing to connect to your IRCd. If BOPM was already running, do not forget to rehash it (BOPM&#8217;s readme suggests that <code>/KILL BOPM (rehashing)</code> is a convenient way to force BOPM to reread its configuration and reconnect). The following uses BOPM&#8217;s in-channel command interface to ask BOPM to scan an IP and check if it would be banned if a client connected from that IP. This requires that you have properly configured BOPM to join a channel with an <code>IRC::channel</code> block. An alternative test would be to just connect to your network through Tor, but that is probably more involved.</p><p>To check if your BOPM would detect a Tor IP, first <a
href="http://proxy.org/tor.shtml">find a Tor exit node</a> (if using list list, ensure to choose an IP for which the “Exit Node?” column has “YES”). Then join the channel where BOPM is and issue the command <code>BOPM check IP</code>, where you replace <code>BOPM</code> with the nickname your BOPM bot is using and replace <code>IP</code> with the Tor exit node IP you looked up. A successful detection will look something like the following:</p><pre>-!- BOPM2 [~bopm@Clk-NNNNNNNN] has joined #opers
&lt;&amp;binki&gt; BOPM2 check A.B.C.D
&lt; BOPM2&gt; CHECK -&gt; Checking 'A.B.C.D' for open proxies on all scanners
&lt; BOPM2&gt; CHECK -&gt; DNSBL -&gt; A.B.C.D appears in BL zone 6667.H.G.F.E.ip-port.exitlist.torproject.org (Tor exit server)
&lt; BOPM2&gt; CHECK -&gt; DNSBL -&gt; A.B.C.D appears in BL zone 6697.H.G.F.E.ip-port.exitlist.torproject.org (Tor exit server)
&lt; BOPM2&gt; CHECK -&gt; DNSBL -&gt; A.B.C.D does not appear in BL zone 6900.H.G.F.E.ip-port.exitlist.torproject.org
&lt; BOPM2&gt; CHECK -&gt; DNSBL -&gt; A.B.C.D appears in BL zone 7000.H.G.F.E.ip-port.exitlist.torproject.org (Tor exit server)
&lt; BOPM2&gt; CHECK -&gt; All tests on A.B.C.D completed.</pre><p>In this scenario, the port 6900 was inside of a reject range policy on the Tor exit node I selected. For some odd reason, it seems that this port is part of a range which is commonly disabled in Tor exit nodes. Yet, the Tor exit node I chose admits that it is willing to connect to my IRCd still and will be banned because of one of the other <code>OPM::blacklist</code> blocks I have defined, such as the one for port 6667.</p><p>In your own tests, you might encounter Tor exit nodes which BOPM does not flag as needing to be banned. There are multiple reasons for this. First of all, you may have selected a Tor exit node with policies which disallow Tor clients to access IRC through it. Thus, you must try with multiple <em>exit</em> nodes randomly selected from some listing of Tor exit nodes before despairing. If you have checked multiple hosts and your BOPM refuses to recognize them, you may have misconfigured your BOPM&#8217;s <code>blacklist</code> entry. Double-check that you have put your correct server&#8217;s public IP in reverse order properly along with the correct port in the <code>blacklist::name</code> entry. Test that BOPM&#8217;s DNS is working by looking up <code>D.C.B.A.P.H.G.F.E.ip-port.exitlist.torproject.org</code>, perhaps using the <code><a
href="http://ohnopub.net/~ohnobinki/man/?p=getent&amp;s=1">getent</a> hosts</code> or <code><a
href="http://ohnopub.net/~ohnobinki/man/?p=dig&amp;s=1">dig</a></code> tools. Remember to rehash BOPM (by <code>/kill</code>ing it with your <code>/oper</code> powers perhaps) after editing <code>bopm.conf</code>.</p> ]]></content:encoded> <wfw:commentRss>http://protofusion.org/wordpress/2012/02/configuring-bopm-for-tordnsel/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Downloading wget Without wget: Use bash</title><link>http://protofusion.org/wordpress/2011/01/downloading-wget-with-bash/</link> <comments>http://protofusion.org/wordpress/2011/01/downloading-wget-with-bash/#comments</comments> <pubDate>Fri, 14 Jan 2011 07:16:59 +0000</pubDate> <dc:creator>Nathan Phillip Brink</dc:creator> <category><![CDATA[Linux]]></category> <category><![CDATA[Quick Tips]]></category> <category><![CDATA[Technology]]></category> <category><![CDATA[bash]]></category> <category><![CDATA[download]]></category> <category><![CDATA[from irc]]></category> <category><![CDATA[networking]]></category> <category><![CDATA[shell]]></category> <category><![CDATA[wget]]></category><guid
isPermaLink="false">http://protofusion.org/wordpress/?p=816</guid> <description><![CDATA[There are many ways to download and install wget without having wget itself installed. For example, one can use curl, ]]></description> <content:encoded><![CDATA[<p> There are many ways to download and install <a
href="http://www.gnu.org/software/wget/">wget</a> without having wget itself installed. For example, one can use <a
href="http://curl.haxx.se/">curl</a>, a sort of competitor to wget, or a package manager with <span
title="what is this lib's homepage?">libfetch or some other library-level downloader integrated (such as <a
href="http://archlinux.org/pacman/">pacman</a>). One may be able to use SSH&#8217;s scp or sftp utility or even use netcat to transfer a wget tarball over a network. But these methods of obtaining wget are not always feasible or even possible whereas a <a
href="http://gnu.org/software/bash/">bash</a> shell and a few core utilities are often readily available.<br
/> </span></p><p><span
id="more-816"></span></p><p> I was introduced to the bash builtin <tt>/dev/tcp</tt> by <a
href="http://forums.unrealircd.com/viewtopic.php?f=9&amp;t=6498#p32272" title="formerly known as aegis">warg</a> the other day on <a
href="irc://irc.x-tab.org/chat">x-tab#chat</a>. He explained a basic use of this device by demonstrating how to download wget&#8217;s compressed tarball. The download process itself can be done with pure bash, but some post-processing of the downloaded file must be done to remove HTTP headers. I document warg&#8217;s application of <tt>/dev/tcp</tt> here because I found the idea fascinating and want this documentation for myself <img
src='http://pf-wordpress.s3.amazonaws.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p><h2>Connecting and Downloading</h2><p> To read about the <tt>/dev/tcp</tt> builtin for yourself, check out the following:</p><p><code>$ info '<a
href="http://gnu.org/software/bash/manual/bash.html#Redirections">(bash) Redirections</a>'</code></p><p> With the <tt>exec</tt> line we initiate the connection, allocating a file descriptor and storing the numeic file descriptor into the HTTP_FD variable. Then, with the <tt>echo</tt> line, we send an HTTP request through the descriptor to the server. After sending the request, we process the server&#8217;s response with the <tt>sed</tt> line which skips over the HTTP headers sent by the server and stows the results into <tt>wget-latest.tar.gz</tt>. Note that this last command will sit around for a while. It is with this command that the builk of the data transfer is performed. And, since you&#8217;re using shell redirections to download the file, you cannot see the download progress. Instead, wait for the command to complete. This also involves waiting for the server to time out your connection since it supports pipelining. After this process is completed, the wget-latest.tar.gz file is as your disposal.</p><p><code><pre>
$ WGET_HOSTNAME='ftp.gnu.org'
$ exec {HTTP_FD}&lt;&gt;/dev/tcp/${WGET_HOSTNAME}/80
$ echo -ne 'GET /gnu/wget/wget-latest.tar.gz HTTP/1.1\r\nHost: '\
    ${WGET_HOSTNAME}'\r\nUser-Agent: '\
    'bash/'${BASH_VERSION}'\r\n\r\n'  &gt;&amp;${HTTP_FD}
$ sed -e '1,/^.$/d' &lt;&amp;${HTTP_FD} &gt;wget-latest.tar.gz
</pre><p></code></p><p> Now you have a wget source tarball on your machine. As long as you have tar and a compiler on the machine, you are well on your way to downloading stuff using a self-compiled wget. In the commands above, you may replace &#8220;gz&#8221; with &#8220;bz2&#8243; or &#8220;lzma&#8221; for smaller downloads if the machine you&#8217;re using has bzip2 or xz-utils installed. And, of course, it should not be too hard to repurpose the above code to download a particular version of wget or even a completely unrelated software package.</p><p> Please feel free to point out problems with this approach or give pointers on porting this to other environments <img
src='http://pf-wordpress.s3.amazonaws.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p> ]]></content:encoded> <wfw:commentRss>http://protofusion.org/wordpress/2011/01/downloading-wget-with-bash/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Google Voice and Asterisk</title><link>http://protofusion.org/wordpress/2010/06/google-voice-and-asterisk/</link> <comments>http://protofusion.org/wordpress/2010/06/google-voice-and-asterisk/#comments</comments> <pubDate>Mon, 14 Jun 2010 03:32:01 +0000</pubDate> <dc:creator>Ethan Zonca</dc:creator> <category><![CDATA[Linux]]></category> <category><![CDATA[Technology]]></category> <category><![CDATA[Asterisk]]></category><guid
isPermaLink="false">http://protofusion.org/wordpress/?p=419</guid> <description><![CDATA[There are numerous guides about setting up Google Voice and an incoming sip number for free outgoing calling. Sadly, all ]]></description> <content:encoded><![CDATA[<p><a
href="http://pf-wordpress.s3.amazonaws.com/wordpress/wp-content/uploads/2010/06/gvheader.png" rel="lightbox[419]"><img
class="alignnone size-large wp-image-436" title="Google Voice &amp; Asterisk" src="http://pf-wordpress.s3.amazonaws.com/wordpress/wp-content/uploads/2010/06/gvheader-500x205.png" alt="Google Voice &amp; Asterisk" width="500" height="205" /></a></p><p>There are numerous guides about setting up Google Voice and an incoming sip number for free outgoing calling. Sadly, all of the guides I found were written for FreePBX or some other Asterisk bundle, and also used a shell script to do much of the work (scary!). I have compiled the minimal amount that you need to put in your asterisk conf files to make things work, GUI-free and variant-independent.</p><p><span
id="more-419"></span></p><h2>Prerequisites</h2><p><a
href="http://sipgate.com/" target="_blank"><img
class="size-large wp-image-444 alignright" title="sipgate logo" src="http://pf-wordpress.s3.amazonaws.com/wordpress/wp-content/uploads/2010/06/sipgate-logo-500x187.jpg" alt="sipgate logo" width="225" height="84" /></a></p><p>First off, you need a sip number. I recommend <a
href="http://sipgate.com/" target="_blank">sipgate</a> or <a
href="http://ipkall.com/">ipkall</a> (I use sipgate, it&#8217;s much more user-friendly). If you google around, you&#8217;ll find out how to set up your sipgate/ipkall number as an incoming number in asterisk, I won&#8217;t waste time covering it here.</p><p>Secondly, you need a google voice number. Once you get said number, turn off call presentation. Also, assign the account a password that you don&#8217;t mind having plaintext in a conf file. In addition, you <strong><em>must</em></strong> add your incoming sip number as a phone in google  voice. I&#8217;d recommend connecting a softphone to your sip number to set this up with google&#8217;s verification call, or redirect all incoming calls in Asterisk to your extension.</p><p>Thirdly, you need <a
href="http://code.google.com/p/pygooglevoice/" target="_blank">pygooglevoice</a>. Download and install it, or use python&#8217;s easy_install command.</p><h2>The outgoing rule</h2><p>Now for the actual configuration. First you need to set up an outgoing call rule, so all calls to the outside world (in this case, 10-digit numbers preceded with a &#8220;9&#8243;) are directed though google voice.</p><blockquote><p
style="padding-left: 30px;">[CallingRule_LocalCalls]<br
/> exten = _9XXXXXXXXXX,1,Goto(custom-gv,${EXTEN:-10},1)</p></blockquote><p><em><strong>Explanation:</strong> Any outgoing 10-digit number prefixed with a 9 will match this rule and go to the custom-gv section which we will set up later. The number that was dialed is passed (the &#8220;-10&#8243; excludes the 9 prefix from this) at the first dialplan rule.</em></p><h2>The GV dialer<em><br
/> </em></h2><p>Now we need to set up the custom-gv section:</p><blockquote><p
style="padding-left: 30px;">[custom-gv]<br
/> exten =&gt; _X.,1,Verbose(0, Custom-GV Preparing to call and park call at number ${EXTEN})<br
/> exten =&gt; _X.,n,Wait(1)<br
/> exten =&gt; _X.,n,Playback(pls-wait-connect-call)<br
/> exten =&gt; _X.,n,System(gvoice -e <span
style="text-decoration: line-through;">me@me.com</span> -p <span
style="text-decoration: line-through;">GVPassword</span> call ${EXTEN} <span
style="text-decoration: line-through;">IncomingNum</span> &amp;)<br
/> exten =&gt; _X.,n,Set(PARKINGEXTEN=701)<br
/> exten =&gt; _X.,n,Park()</p></blockquote><p><em><strong>Explanation:</strong> After you dial an outgoing number, you&#8217;ll be dropped in here. The Verbose() function tosses some output in debug level 0 and up (see the console for this output). The System() command dials the number with google voice. Make sure you change the items in <span
style="text-decoration: line-through;">strikethrough</span> to your own personal information. The call is then parked on extension 701 (70X extensions for parking are default. Switch to your parking extension range if you are using non-default options).</em></p><h2>Routing GV callbacks<em><br
/> </em></h2><p>Now you need to set up an incoming call rule. Direct all incoming calls from your sip number at this rule.</p><blockquote><p
style="padding-left: 30px;">[incoming-call-sifter]<br
/> exten = s,1,NoOp(CIDredirect)<br
/> exten = s,2,Verbose(0, Got incoming CID ${CALLERID(num)}, redirecting&#8230;)<br
/> exten = s,3,GotoIf($["${CALLERID(num)}" == "<span
style="text-decoration: line-through;">GVNumber</span>"]?custom-park,s,1)<br
/> exten = s,4,Goto(<span
style="text-decoration: line-through;">section-to-route-normal-incoming-calls</span>,s,1)</p></blockquote><p><em><strong>Explanation:</strong> If your google voice number rings your PBX, you know that it&#8217;s connecting you to the call you just dialed, so we need to reconnect it to the extension you dialed from. We&#8217;ll handle linking of the incoming GV call and your outgoing call (which is now parked) in the next section (custom-park).</em></p><h2>Bringing it all together<em><br
/> </em></h2><p>The custom-park section links a google voice incoming call (which is actually ringing the person you originally dialed) with your original outgoing call (which is parked).</p><blockquote><p
style="padding-left: 30px;">[custom-park]<br
/> exten =&gt; s,1,Verbose(0, Got incoming GV Callback! Connecting to your original outgoing call&#8230;)<br
/> exten =&gt; s,2,ParkedCall(701)</p></blockquote><p><em><strong>Explanation:</strong> After you dialed your external number, your call was parked as google voice started dialing the other number. This section joins your outgoing call with google voice&#8217;s incoming call, so you are connected to the party you originally dialed.</em></p><h2>You&#8217;re done!</h2><div
class="simplePullQuote">Have comments, questions, or need clarification? Leave a  comment!</div><p>Well that turned out to be a bit longer than I expected, but if you know what you&#8217;re doing, you can just ignore the italicized text.</p> ]]></content:encoded> <wfw:commentRss>http://protofusion.org/wordpress/2010/06/google-voice-and-asterisk/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Archlinux Chroot on Gentoo Guide</title><link>http://protofusion.org/wordpress/2010/04/archlinux-chroot-on-gentoo-guide/</link> <comments>http://protofusion.org/wordpress/2010/04/archlinux-chroot-on-gentoo-guide/#comments</comments> <pubDate>Sat, 01 May 2010 02:09:09 +0000</pubDate> <dc:creator>Nathan Phillip Brink</dc:creator> <category><![CDATA[Linux]]></category> <category><![CDATA[archlinux]]></category> <category><![CDATA[gentoo]]></category> <category><![CDATA[Grammar]]></category> <category><![CDATA[pacman]]></category><guid
isPermaLink="false">http://protofusion.org/wordpress/?p=310</guid> <description><![CDATA[Archlinux is quite a popular distribution among the geekier crowd of GNU/Linux users. I understand that Ubuntu is the most ]]></description> <content:encoded><![CDATA[<p><a
href="http://archlinux.org/">Archlinux</a> is quite a popular distribution among the geekier crowd of <a
href="http://gnu.org/">GNU</a>/<a
href="http://kernel.org/">Linux</a> users. I understand that <a
href="http://ubuntu.com/">Ubuntu</a> is the most popular GNU/Linux distribution in general. It may supposedly fit the needs of the populace, but that attempt to support getting grandma on the keyboard is the reason that this distro is unattractive to us geeks <img
src='http://pf-wordpress.s3.amazonaws.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .<br
/> <span
id="more-310"></span></p><p>As a Gentoo user, I value the ability to compile and install things from source. Yet I don&#8217;t want the messiness of a completely manual &#8220;distribution&#8221; such as <a
href="http://linuxfromscratch.org/">LFS</a>. Yet I feel like I&#8217;m missing out of a big chunk of the GNU/Linux experience when I have to tell people that I&#8217;ve only ever used Gentoo. Also, if one wants to make his package available from multiple distributions, he may find more success if he is able to facilitate creation of the binary packages for these other distributions.</p><p>Thus, I have committed <a
href="http://archlinux.org/pacman/">sys-apps/pacman</a> into <a
href="http://overlays.gentoo.org/proj/sunrise">Sunrise</a>. I still have to get permission to commit a few fixes (hopefully by tomorrow). Also, archlinux&#8217;s take on <a
href="http://gentoo-portage.com/ap-portage/mirrorselect/">mirrorselect</a>, <a
href="http://xyne.archlinux.ca/projects/reflector">reflector</a>, has been <a
href="http://overlays.gentoo.org/proj/sunrise/changeset/10513">committed</a> but awaits <a
href="http://overlays.gentoo.org/proj/sunrise/browser/reviewed/www-misc/reflector">review</a>. When these things get through, the following may actually be worth something:</p><p>I have attempted to write a <a
href="http://ohnopub.net/~ohnobinki/gentoo/arch/">guide to setting up an archlinux chroot on Gentoo</a>. Don&#8217;t actually try the guide until about a week from now, when my stuff clears review, of course <img
src='http://pf-wordpress.s3.amazonaws.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> . However, in the meantime, I would gladly accept:</p><ul><li>Technical criticisms</li><li>(if you are tommy[d], please ignore the following) Alerts about the misuse of the apostrophe or general grammatical problems</li><li>Documentation storage format suggestions &mdash; I suppose it would be a good exercise for me to learn <a
href="http://docbook.org/">docbook</a> someday. Should I start now?</li></ul> ]]></content:encoded> <wfw:commentRss>http://protofusion.org/wordpress/2010/04/archlinux-chroot-on-gentoo-guide/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Insurgency: Access your linux box from anywhere</title><link>http://protofusion.org/wordpress/2009/12/insurgency-access-your-linux-box-from-anywhere/</link> <comments>http://protofusion.org/wordpress/2009/12/insurgency-access-your-linux-box-from-anywhere/#comments</comments> <pubDate>Sun, 13 Dec 2009 07:33:15 +0000</pubDate> <dc:creator>Ethan Zonca</dc:creator> <category><![CDATA[Linux]]></category> <category><![CDATA[Quick Tips]]></category> <category><![CDATA[insurgent]]></category> <category><![CDATA[networking]]></category> <category><![CDATA[port-forwarding]]></category> <category><![CDATA[ssh]]></category><guid
isPermaLink="false">http://protofusion.org/wordpress/?p=184</guid> <description><![CDATA[The problem: you have a computer sitting behind a firewall. You want to access it from a different location, but ]]></description> <content:encoded><![CDATA[<p><img
class="size-full   alignnone" title="Networking" src="http://pf-wordpress.s3.amazonaws.com/wordpress/wp-content/uploads/2009/12/3834148667_ceeeb12b4a_b.jpg" alt="Routers :: Credit: flicr user stars6" width="438" height="208" /></p><p>The problem: you have a computer sitting behind a firewall. You want to access it from a different location, but you don&#8217;t have the ability to forward any ports to it. The answer: SSH tunneling.<br
/> <span
id="more-184"></span><br
/><h2>The Solution</h2><p>Using an SSH tunnel, you can reverse-forward ports from one computer to another. To do this, you will need a computer running linux and <a
href="http://openssh.org/">sshd</a> to reverse-forward the ports to. It is very convenient if this is the computer you will be using to access the remote machine. Otherwise, additional steps must be taken.</p><h2>The Setup</h2><p>The easiest way to set up and maintain a reverse port-forwarding tunnel is with ohnobinki&#8217;s <a
href="http://ohnopublishing.net/hg/insurgent" target="_blank">insurgent</a> script. The script allows you to specify a remote host and the ports you want to reverse-forward. To start off, create a new user on your system, such as <tt>insurgent</tt>. Log in or start a shell as this user. Assuming you have <a
href="http://mercurial.selenic.com/">mercurial</a> installed, run:</p><blockquote><p><code>hg clone https://ohnopublishing.net/hg/insurgent</code></p></blockquote><p>Now cd to the newly created insurgent/bin directory. Finally, place the contents of insurgent/share/contab.txt into your crontab (use <tt>crontab -e</tt> to edit your crontab).</p><p>Now you simply need to configure the script. To do so, open insurgent.sh in your favorite editor, and update the REMOTE_HOST and other variables. The format for ports is [remoteport]:hostname:[localport] (<a
href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh&#038;sektion=1#TCP+FORWARDING">ssh(1)</a> ). I recommend starting with reverse-fowarding SSH (port 22), a vnc session (590x where x is the VNC display number), and nfs.</p><p>If you have not done so already, you need to set up <a
href="/wordpress/2009/12/quick-and-easy-passwordless-public-key-auth/">passwordless public key authentication</a> for the new <tt>insurgent</tt> user.</p><h2>You&#8217;re Done!</h2><p>If you&#8217;ve gotten this far, you may be ready to go. You should be able to access any port on your insurgent box via the corresponding port on your local box. Have any problems? Drop some comments below or pop into <a
href="irc://irc.ohnopub.net/protofusion">irc.ohnopub.net#protofusion</a> and speak to <tt>ohnobinki</tt> or <tt>normaldotcom</tt>.</p><h6>Image credit: <a
href="http://www.flickr.com/star6" target="_blank">star6</a>. Used under Creative Commons <a
rel="license" href="http://creativecommons.org/licenses/by-sa/2.0/">CC BY-SA 2.0</a></h6> ]]></content:encoded> <wfw:commentRss>http://protofusion.org/wordpress/2009/12/insurgency-access-your-linux-box-from-anywhere/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Quick and Easy Passwordless public-key auth</title><link>http://protofusion.org/wordpress/2009/12/quick-and-easy-passwordless-public-key-auth/</link> <comments>http://protofusion.org/wordpress/2009/12/quick-and-easy-passwordless-public-key-auth/#comments</comments> <pubDate>Sun, 13 Dec 2009 07:09:18 +0000</pubDate> <dc:creator>Ethan Zonca</dc:creator> <category><![CDATA[Linux]]></category> <category><![CDATA[ssh]]></category><guid
isPermaLink="false">http://protofusion.org/wordpress/?p=186</guid> <description><![CDATA[Need passwordless auth with ssh? Need it really really fast? 3 steps and you&#8217;re done. ssh-keygen -t rsa      ]]></description> <content:encoded><![CDATA[<p>Need passwordless auth with ssh? Need it really really fast? 3 steps and you&#8217;re done.</p><ol><li>ssh-keygen -t rsa      <em>(don&#8217;t enter a passphrase)</em></li><li>ssh-copy-id -i ~/.ssh/id_rsa user@remotehost<em></em></li><li>ssh user@remotehost</li></ol><p>Wasn&#8217;t that easy?</p> ]]></content:encoded> <wfw:commentRss>http://protofusion.org/wordpress/2009/12/quick-and-easy-passwordless-public-key-auth/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Using a DRAC II on CentOS 5</title><link>http://protofusion.org/wordpress/2009/08/using-a-drac-ii-on-centos-5/</link> <comments>http://protofusion.org/wordpress/2009/08/using-a-drac-ii-on-centos-5/#comments</comments> <pubDate>Sat, 22 Aug 2009 22:59:32 +0000</pubDate> <dc:creator>Ethan Zonca</dc:creator> <category><![CDATA[Linux]]></category> <category><![CDATA[dell]]></category> <category><![CDATA[hardware]]></category><guid
isPermaLink="false">http://protofusion.org/wordpress/?p=60</guid> <description><![CDATA[This post chronicles my adventures trying to get a DRAC II card operational on my poweredge 4300 server running CentOS ]]></description> <content:encoded><![CDATA[<p>This post chronicles my adventures trying to get a DRAC II card operational on my poweredge 4300 server running CentOS 5. This post also applies to most other linux distros, especially redhat-based distros. I will also document setting up remote access of the DRAC II card using a remote linux console on WAN.</p><p><span
id="more-60"></span></p><p>First off, install your DRAC card in the server, before going any further. Hook up a cat3/5/6/7 up to it for good measure as well, and get it on your network. Done? Good. Now comes the fun part.</p><p>Boot up your system, then hop over to <a
href="http://support.us.dell.com/support/downloads/download.aspx?c=us&amp;l=en&amp;s=gen&amp;releaseid=R23983&amp;formatcnt=1&amp;libid=0&amp;fileid=25102" target="_blank">this</a> page on Dell&#8217;s site to download the drivers and utilities for your DRAC II card. Unzip the file somewhere on your filesystem, and cd into the rpm directory. You should see 4 RPM files. You need to install the rpm corresponding to the kernel you use (most users will want the &#8220;UP&#8221; rpm, for standard kernel, EP is Enterprise Kernel, SMP is the SMP kernel).</p><p>To make this process a bit less painful (maybe), use<em> yum localinstall &lt;DRAC-RH70-XX-2.3.2-X.X.rpm</em> to install the driver package you need. (Note: don&#8217;t install the &#8220;Common&#8221; RPM yet)</p><p>Now, type <em>yum localinstall DRAC-RH70-Common-2.3.2-2.i386.rpm</em> to install the utilities package.</p><p>As of this point, both of these commands will probably fail miserably on a more modern system (e.g., CentOS 5) due to missing dependencies. Fixing this is extremely hard, because the software wants ucd-snmp, which has been renamed to net-snmp as of late. &#8220;module-info&#8221; is also reported unresolvable and should be present on the system. Any ideas on how to fix these? Check out the comments. I will post a workaround once I learn of one.</p><p>Until then&#8230;</p> ]]></content:encoded> <wfw:commentRss>http://protofusion.org/wordpress/2009/08/using-a-drac-ii-on-centos-5/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>IRC via Telnet</title><link>http://protofusion.org/wordpress/2009/08/irc-via-telnet/</link> <comments>http://protofusion.org/wordpress/2009/08/irc-via-telnet/#comments</comments> <pubDate>Mon, 17 Aug 2009 23:13:57 +0000</pubDate> <dc:creator>Ethan Zonca</dc:creator> <category><![CDATA[Linux]]></category> <category><![CDATA[irc]]></category> <category><![CDATA[telnet]]></category><guid
isPermaLink="false">http://protofusion.org/wordpress/?p=43</guid> <description><![CDATA[Ever wanted to get on IRC without a client on the command line? Well you can, and it&#8217;s pretty easy, ]]></description> <content:encoded><![CDATA[<p>Ever wanted to get on IRC without a client on the command line? Well you can, and it&#8217;s pretty easy, using IRC&#8217;s protocol syntax. All you need is a box with or without X, the telnet program (included by default in most linux distros), and an IRC server. Feel free to try this out on ProtoFusion&#8217;s IRC server, irc://irc.protofusion.org/.</p><p><span
id="more-43"></span></p><p>Start out by telnetting to your server, in this example, ProtoFusion&#8217;s IRC server on the default port for IRC</p><p
style="padding-left: 30px;"><em>telnet irc.protofusion.org 6667</em></p><p>Now you should see something like this:</p><p
style="padding-left: 30px;"><em>:irc.protofusion.org NOTICE AUTH :*** Looking up your hostname&#8230;<br
/> :irc.protofusion.org NOTICE AUTH :*** Found your hostname (cached)</em></p><p>If not, ensure that your port and server settings are correct. Now that you&#8217;re connected, you need to set your nickname and your user info. This is done with a simple series of commands:</p><p
style="padding-left: 30px;"><em>USER your name * * :Your Description<br
/> NICK yournickname</em></p><p>Now you should see some log-on output, and you should autojoin #protofusion if you&#8217;re on protofusion.org. If not, you cna join channels with the JOIN [channel] command. Of course you will probably want to talk in the channel, which is a bit tedious uneless you put the first part in your clipboard.</p><p
style="padding-left: 30px;"><em>PRIVMSG #protofusion Write your message text here</em></p><p>The privmsg command can also be used with a username instaed of a channel to PM an individual IRC user. Other stuff you may want to know:</p><ul><li>The server usually pings users every once and a while, and you need to &#8220;pong&#8221; back to the server so your session doesn&#8217;t time out and disconnect. If the server sends you a &#8220;PING :protofusion.org&#8221; or the like, you must respond &#8220;PONG :protofusion.org&#8221; in a somewhat timely fashion, depending on the server&#8217;s configuration.</li><li>Your connection can also time out if you d on&#8217;t set your USER and NICK data in a timely fashion</li></ul> ]]></content:encoded> <wfw:commentRss>http://protofusion.org/wordpress/2009/08/irc-via-telnet/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Ndiswrapper in a few lines</title><link>http://protofusion.org/wordpress/2009/08/ethan-zonca/</link> <comments>http://protofusion.org/wordpress/2009/08/ethan-zonca/#comments</comments> <pubDate>Thu, 13 Aug 2009 00:28:58 +0000</pubDate> <dc:creator>Ethan Zonca</dc:creator> <category><![CDATA[Linux]]></category> <category><![CDATA[open source]]></category><guid
isPermaLink="false">http://protofusion.org/wordpress/?p=36</guid> <description><![CDATA[ndiswrapper -i yourdriver.inf ndiswrapper -l  #Ensure that it says &#8220;Driver Installed&#8221; and &#8220;Hardware Present&#8221; ndiswrapper  -m ndiswrapper -ma ndiswrapper -mi ]]></description> <content:encoded><![CDATA[<p>ndiswrapper -i yourdriver.inf<br
/> ndiswrapper -l  #Ensure that it says &#8220;Driver Installed&#8221; and &#8220;Hardware Present&#8221;<br
/> ndiswrapper  -m<br
/> ndiswrapper -ma<br
/> ndiswrapper -mi<br
/> modprobe ndiswrapper</p><p>&#8230;And you&#8217;re good to go! Feel free to run /etc/init.d/network restart if you feel like it.</p> ]]></content:encoded> <wfw:commentRss>http://protofusion.org/wordpress/2009/08/ethan-zonca/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Object Caching 822/822 objects using disk: basic
Content Delivery Network via Amazon Web Services: S3: pf-wordpress.s3.amazonaws.com

Served from: protofusion.org @ 2012-05-22 08:02:24 -->
