<?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>[boomshadow.net~]# &#187; Tech</title>
	<atom:link href="http://boomshadow.net/category/tech/feed/" rel="self" type="application/rss+xml" />
	<link>http://boomshadow.net</link>
	<description>Tech, filmmaking, &#38; thoughts.</description>
	<lastBuildDate>Sat, 13 Apr 2013 12:45:33 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Backing Up and Restoring MySQL Databases</title>
		<link>http://boomshadow.net/tech/backup-restore-mysql-databases/</link>
		<comments>http://boomshadow.net/tech/backup-restore-mysql-databases/#comments</comments>
		<pubDate>Tue, 27 Nov 2012 13:02:30 +0000</pubDate>
		<dc:creator>Jacob "Boom Shadow" Tirey</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[export]]></category>
		<category><![CDATA[import]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysqldump]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<category><![CDATA[restore]]></category>

		<guid isPermaLink="false">http://boomshadow.net/?p=1072</guid>
		<description><![CDATA[Backing up your data is a critical aspect of maintaining any system. Think how devastating it would be if you woke up and it was gone one day? That is why I'll show you how to backup (export) your MySQL databases and how to restore (import) them back.]]></description>
				<content:encoded><![CDATA[<div id="attachment_1115" class="wp-caption alignleft" style="width: 160px"><a href="http://boomshadow.net/wp-content/uploads/2012/11/mysql-logo.png"><img src="http://boomshadow.net/wp-content/uploads/2012/11/mysql-logo-150x150.png" alt="MySQL Logo - Copyright 2012 Oracle and/or its affiliates. All rights reserved. Used by permission." width="125" height="125" class="size-thumbnail wp-image-1115" /></a><p class="wp-caption-text">Copyright 2012 <a href="http://www.oracle.com" target="_blank">Oracle</a> and/or its affiliates. All rights reserved. Used by permission.</p></div>
<h2><a name="export"></a><a href="#export">Backing up / Exporting</a></h2>
<p>The best advice I ever heard is: if your data is important to you at all, then you should back it up. What would happen if you suddenly lost it? How devastating would it be? Backing up is such a simple step, and can potentially save you many hours of work, stress, and possibly your job (if the data is that important).</p>
<p>To backup a database, we simply need to export the database. To restore it, we need to import the database. I&#8217;ll show you how to do both using a few different methods:</p>
<h4><a name="export-from-cpanel"></a><a href="#export-from-cpanel">Backing up a Single Database from within cPanel</a></h4>
<p>In cPanel, you can download a copy of your database by simply logging into cPanel and go to the &#8216;Backup&#8217; section.</p>
<p><a href="http://boomshadow.net/wp-content/uploads/2012/11/cPanel-backup-section.jpg"><img src="http://boomshadow.net/wp-content/uploads/2012/11/cPanel-backup-section-300x234.jpg" alt="cPanel-backup-section" title="cPanel-backup-section" width="300" height="234" class="aligncenter size-medium wp-image-1077" /></a></p>
<p>Then click on the link for your database name. It will prompt your to download your database in a compressed archive (tar.gz) to your local computer.</p>
<p><a href="http://boomshadow.net/wp-content/uploads/2012/11/database-backup.jpg"><img src="http://boomshadow.net/wp-content/uploads/2012/11/database-backup-300x153.jpg" alt="database-backup" title="database-backup" width="300" height="153" class="aligncenter size-medium wp-image-1079" /></a></p>
<h4><a name="export-from-command-line"></a><a href="#export-from-command-line">Backing up a single database with command line</a></h4>
<p>If you prefer the command line, you can backup your database using a single command:</p>
<pre>
mysqldump -Q --add-drop-table your_database_name > file.sql
</pre>
<h4><a name="export-all"></a><a href="#export-all">Backing up all databases to separate files</a></h4>
<p>If you would like to play it safe or know that you have many different databases that are all important, then you can run a &#8216;for&#8217; loop to individually dump all databases to their own file:</p>
<p>Fist create a directory for all the dumps to go and create an empty list of all the database names:</p>
<pre>
mkdir /root/database_backups ; touch /root/database_backups/list-of-databases
</pre>
<p>Then, run the for loop to dump the databases and generate the list of database names:</p>
<pre>
for db in `mysql -e 'show databases' | grep -v Database` ; do mysqldump -Q --add-drop-table $db > /root/database_backups/$db.sql &#038;&#038; echo $db >> /root/database_backups/list-of-databases ; done
</pre>
<p></p>
<h2><a name="restore"></a><a href="#restore">Restoring / Importing</a></h2>
<p>In the event that you&#8217;ve got missing data, corrupt tables, or generally something went wrong, don&#8217;t worry! You have backups that you can restore from. Here&#8217;s how you restore that databases back from the exports you made above.</p>
<h4><a name="restore-from-phpmyadmin"></a><a href="#restore-from-phpmyadmin">Restoring from phpMyAdmin</a></h4>
<p>First off, you&#8217;ll need to log into phpMyAdmin. From cPanel, it is found in &#8216;Databases&#8217; section.</p>
<p><a href="http://boomshadow.net/wp-content/uploads/2012/11/phpMyAdmin-in-cpanel.jpg"><img src="http://boomshadow.net/wp-content/uploads/2012/11/phpMyAdmin-in-cpanel-300x183.jpg" alt="phpMyAdmin-in-cpanel" title="phpMyAdmin-in-cpanel" width="300" height="183" class="aligncenter size-medium wp-image-1081" /></a></p>
<p>Once inside, you&#8217;ll select your database on the left-hand side. This is the database that you want to import that data into.</p>
<p><strong>*** Warning:</strong> This will overwrite your existing tables.</p>
<p>Once you have the database selected, click on the &#8216;import&#8217; tab at the top.</p>
<p><a href="http://boomshadow.net/wp-content/uploads/2012/11/phpMyAdmin-import.jpg"><img src="http://boomshadow.net/wp-content/uploads/2012/11/phpMyAdmin-import-300x232.jpg" alt="phpMyAdmin-import" title="phpMyAdmin-import" width="300" height="232" class="aligncenter size-medium wp-image-1082" /></a></p>
<p>Click &#8216;Browse&#8217; and navigate to the file on your local computer.</p>
<p>Look over the various options. Most times, you can just leave them as is. If you don&#8217;t know what the options are, I&#8217;d advise just to leave them set to default.</p>
<p>Hit &#8216;Go&#8217;.</p>
<h4><a name="restore-from-command-line"></a><a href="#restore-from-command-line">Restore a single database from command line</a></h4>
<p>If you are similar to me, you might prefer a command line. I think its much easier to import it this way as the command is so short &#038; simple:</p>
<p>If you are logged in as root, simply run:</p>
<pre>
mysql db_name < file.sql
</pre>
<p>Make note of the direction that the arrow (greater-than sign) is pointing. This indicates the direction where the data is going. In this case, the arrow points to the left towards the MySQL database name. This indicates that the data is being imported FROM the .sql file in-TO the server's MySQL database, which is exactly what we want.</p>
<p>If you don't have root access, you can still import but the command requires a couple more flags and that you know the database credentials:</p>
<pre>
mysql -p -u db_username db_name < file.sql
</pre>
<p>It'll prompt you for that user's password. Enter it in and the import will begin.</p>
<h4><a name="restore-all"></a><a href="#restore-all">Restore all databases from command line</a></h4>
<p>Remember that command we did to export all databases to their own separate dump files? Well, lets say you wanted to easily import all of them back in for whatever reason. We just need to run another simple 'FOR' loop in order to get them back in. Basically, we are doing an individual database import, but for each database that is in that 'list-of-databases' that we generated earlier:</p>
<pre>
for db in `cat /root/database_backups/list-of-databases` ; do mysql $db < /root/database_backups/$db.sql ; done
</pre>
<p>Once that finishes, you'll have all your exported databases fully restored back as they once were: Fast, safe, and easy!</p>
<h2><a name="thoughts"></a><a href="#thoughts">Final Thoughts</a></h2>
<p>If you have a huge database, running a mysqldump can cause your entire website to go down. This is because you are locking the tables during the dump (cPanel backups can do the same thing). If you are worried about this, be sure to perform your backup export during a time of low site traffic. With that said, SQL backups are a great idea. An equally good idea is to occasionally try to restore your backups (to make sure they are good). Simply restore them to a different database name if you don’t want to overwrite an existing database.</p>
<h2><a name="notes"></a><a href="#notes">Note about this article</a></h2>
<p>This article is one I had written for the ServInt blog as part of the 'Tech bench' series. You can view it on the <a href="http://blog.servint.net/2012/12/07/the-tech-bench-backing-up-and-restoring-mysql-databases/" title="ServInt Blog" target="_blank">ServInt blog here</a>. They are using my article with my permission.</p>
]]></content:encoded>
			<wfw:commentRss>http://boomshadow.net/tech/backup-restore-mysql-databases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cPanel&#8217;s Webinar on WHM 11.34 features</title>
		<link>http://boomshadow.net/tech/cpanel-11-34-features-webinar/</link>
		<comments>http://boomshadow.net/tech/cpanel-11-34-features-webinar/#comments</comments>
		<pubDate>Wed, 07 Nov 2012 19:11:09 +0000</pubDate>
		<dc:creator>Jacob "Boom Shadow" Tirey</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[archiving]]></category>
		<category><![CDATA[cpanel]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[features]]></category>
		<category><![CDATA[webdisk]]></category>
		<category><![CDATA[webinar]]></category>
		<category><![CDATA[whm]]></category>

		<guid isPermaLink="false">http://boomshadow.net/?p=1054</guid>
		<description><![CDATA[If you didn't catch cPanel webinar on WHM 11.34 features, that's okay. I'll give you a quick rundown of some of the great new features such as: email auto-config, webdisk, and email archive. I'll also share some of the exciting news/gossip concerning future releases!]]></description>
				<content:encoded><![CDATA[<p><a href="http://boomshadow.net/wp-content/uploads/2012/11/cp-logo.png"><img src="http://boomshadow.net/wp-content/uploads/2012/11/cp-logo.png" alt="cPanel logo" title="cPanel logo" width="60" height="52" class="alignleft size-full wp-image-1057" /></a></p>
<p>If you didn&#8217;t have a chance to catch today&#8217;s cPanel webinar on the new WHM 11.34 features you missed out. Surprisingly, the entire webinar lasted a mere 30 minutes and the features portion wasn&#8217;t, in my mind, the most interesting section. However, it had some good information on some of the more sought after features. I took note of the three that caught my eye the most:</p>
<h4>Email auto-config scripts</h4>
<p>One of the biggest changes I&#8217;ve always felt was needed was updating the email auto-configs scripts. cPanel has had this feature for quite some time, so its nothing new. The problem was that for the longest time, neither was what it supported. Up until just a few months ago, cPanel supported up to Outlook 2000. These auto-configuration scripts made life easier, when they would actually work. Now, that will change. Although the interface may not specifically say it, the latest cPanel Mail Client Auto Configuration scripts are tested to work with modern OS and email clients such as: Mac Mountain Lion and Windows Mail clients for 2010. Oh happy day!</p>
<h4>Webdisk</h4>
<p>The Webdisk got an update as well. Webdisk is another feature thats been around for some time, but had grown outdated to the point, again in my opinion, useless. Not anymore! Now, it has auto-config scripts for modern OS&#8217;s and even for mobile devices: iPad, iPhone, &#038; Android. Mobile support is accomplished by referring you to a free app: WebDAV Navigator. I tested it out, and it works really well. Essentially, it has the power to turn your server into a private drop disk, complete with different user permission levels. You can setup as many webdisk user accounts as you like, give some of them read-only permission, even set them all to have the same directory, and bam! You have a community dropbox area on your server. I found it easy to setup, easy to use, fast, intuitive, and highly accessible for my phone. Directly from the App, it prompted me to upload photos from my photo library or take a new photo. I may start using it over FTP in many situations, such as quick blogging. This new version really brings Webdisk back into my everyday usage.</p>
<h4>Email Archiving</h4>
<p>Email archiving is a recurring feature that I&#8217;ve seen over the years. I even <a href="http://boomshadow.net/tech/forward-all-emails/" title="How to forward/archive all email for a user" target="_blank">wrote up an article</a> for a custom way to set this up with Exim. My article is happily now outdated and unnecessary. cPanel has done a great job of doing what my method did and better! It has custom levels of saving email for your personal preference or for compliance with your countries laws. You can tell it how log to save what types of email. For example, you can have it save all outgoing messages for 30 days while all incoming gets saved for 3 months. The archive is IMAP and Webmail accessible, or you can download a backup from within cPanel.</p>
<p>To enable email archiving, go to &#8216;Tweak Settings&#8217; inside of WHM.</p>
<p>    Note: Email archiving DOES count towards individual user&#8217;s disk quotas.<br />
    Note 2: Email archiving settings can be transferred with an account when doing WHM to WHM transfers, but both servers must have WHM 11.34. </p>
<h3>Q&#038;A</h3>
<p>As much as I love the above features, I actually think the Q&#038;A section yielded far more interesting information, but I suppose more in the terms of answering cPanel gossip:</p>
<h4>1) 11.34 going to &#8216;Stable&#8217; release</h4>
<p>The new 11.34 is going to be moved to the next release Tier (Stable) in as soon as the next week or the week after. This means ever more clients will be affected. If you work in or around the hosting side of things, I&#8217;m sure you&#8217;ve had quite the influx of customers contacting you saying that their server is telling them that their MySQL or Operating System is out of date. Well, with 11.34 going to &#8216;Stable&#8217; release, prepare to be surged with even more contacts. Thankfully, where I work, we&#8217;ve got things down to a science and upgrading either the OS or MySQL is easy and second nature.</p>
<h4>2) New Interface moving to cPanel</h4>
<p>cPanel confirmed that they are pushing this new feature rich visual WHM interface out to the individual customer cPanel interface in the next version (11.36). You will want to be sure you are well versed in it&#8217;s navigation and new features. You&#8217;ll probably have a bunch of your customers asking you some questions about the &#8216;new look&#8217; when that release goes out.</p>
<h4>3) Mobile support</h4>
<p>The next version will see WHM have iPhone and Android support. This will be accomplished NOT through an App, but rather through HTML5 and CSS. cPanel&#8217;s head developer put explained that with a fabulous reason: &#8230;.if we create an iPhone/iPad app, that will leave Android behind. If we make an Android app, it will leave iOS behind. If the development is done through hooks and device detection in HTML5, they can have a mobile compatible solution for ALL devices, even Blackberry.</p>
<h4>4) Regular Updates</h4>
<p>cPanel has stated that they are moving to a &#8220;three versions-per-year&#8221; release system. The next one (11.36) will be coming out at the very beginning of next year. Thats a very quick turn-around, but I&#8217;m confident they can do it while continuing to release exciting and well developed feature like they have in 11.34. Their newly organized animal named developer teams and new cPanel Feature request/discussion system (http://features.cpanel.net/) will go a long way to seeing that accomplished.</p>
<h4>Conclusion</h4>
<p>I hope you find this information helpful. If you missed out on the Webinar and want to see it, no worries. cPanel will have it posted to their Video page later end of this week: <a href="http://videos.cpanel.net/category/webinars/ " title="cPanel's Webinar Videos" target="_blank">http://videos.cpanel.net/category/webinars/ </a></p>
]]></content:encoded>
			<wfw:commentRss>http://boomshadow.net/tech/cpanel-11-34-features-webinar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to still get a free DynDNS account</title>
		<link>http://boomshadow.net/tech/how-to-still-get-a-free-dyndns-account/</link>
		<comments>http://boomshadow.net/tech/how-to-still-get-a-free-dyndns-account/#comments</comments>
		<pubDate>Thu, 18 Oct 2012 14:01:59 +0000</pubDate>
		<dc:creator>Jacob "Boom Shadow" Tirey</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[d-link]]></category>
		<category><![CDATA[dynamic dns]]></category>
		<category><![CDATA[dyndns]]></category>
		<category><![CDATA[loopholes]]></category>

		<guid isPermaLink="false">http://boomshadow.net/?p=1030</guid>
		<description><![CDATA[DynDNS used to be the largest offeror for free Dynamic DNS until they stopped new free accounts and only did paid ones. Here's how to still get a free account.]]></description>
				<content:encoded><![CDATA[<p><a href="http://boomshadow.net/wp-content/uploads/2012/10/dynamic-dns.png"><img src="http://boomshadow.net/wp-content/uploads/2012/10/dynamic-dns-150x150.png" alt="" title="Dynamic DNS" width="100" height="100" class="alignleft size-thumbnail wp-image-1044" /></a><br />
<h4>What Happened to DynDNS</h4>
<p>Sometime around November of last year (2011), the popular Dynamic DNS provider, DynDNS severely limited their free account offerings (See reference link #1 at the bottom of the page). They eliminated new free accounts from being created, citing that users could still get the 14 day pro trial. Pre-existing free accounts were grandfathered in, but with 2 very important restrictions placed on them:</p>
<ol>
<li>Limited to 2 hostnames</li>
<li>They will expire if not updated every 30 days</li>
</ul>
<p>Many existing free users found that they were dropped down to two while some had their accounts expired because they didn&#8217;t do the update within a month. Needless to say, this upset quite a few people and sparked much debate (See reference links #2,3,&#038; 4 at the bottom of the page). I understand why they did it; they wanted to increase their profits. However, the problem was that there were many how-to guides out there that referenced <a href="http://dyn.com/dns/" target="_blank">DynDNS&#8217;s</a> free service; there were many hardware devices such as routers and IP cameras that were hard-wired to use <a href="http://dyn.com/dns/" target="_blank">DynDNS</a>.</p>
<p>Today, I&#8217;m going to show you a loophole that still allows for you to get a free DynDNS account.</p>
<h4>The Discovery</h4>
<p>While exploring the options of my D-Link router, I came across Dynamic DNS page. Normally, I skip straight to the credentials portion at the bottom where I&#8217;ve already got my pre-existing DynDNS free account setup. However, I see that D-Link offers &#8216;their own&#8217; Dynamic DNS. See image: <div id="attachment_1033" class="wp-caption aligncenter" style="width: 310px"><a href="http://boomshadow.net/wp-content/uploads/2012/10/D-Link-router.png"><img src="http://boomshadow.net/wp-content/uploads/2012/10/D-Link-router-300x196.png" alt="Picture of the D-Link router admin area where they offer their own Dynamic DNS" title="D-Link-router" width="300" height="196" class="size-medium wp-image-1033" /></a><p class="wp-caption-text">Click image to see larger view</p></div>
<p>I was curious to see if their service was any good and what limitations hey placed. Their Dynamic DNS is offered at: <a href="http://www.dlinkddns.com/" target="_blank">http://www.dlinkddns.com/</a></p>
<p>I noticed something very interesting when poking around the FAQ and How-to. They say your credentials are usable at www.dyndns.com. See attached screen shot: <div id="attachment_1035" class="wp-caption aligncenter" style="width: 310px"><a href="http://boomshadow.net/wp-content/uploads/2012/10/dlink-faq.gif"><img src="http://boomshadow.net/wp-content/uploads/2012/10/dlink-faq-300x169.gif" alt="Screenshot of D-Link&#039;s FAQ for their Dynamic DNS" title="D-Link FAQ" width="300" height="169" class="size-medium wp-image-1035" /></a><p class="wp-caption-text">Click image to see larger view</p></div>
<p>To me, this says that D-Link&#8217;s service is merely a reselling of DynDNS&#8217;s service.</p>
<h4>Confirmation</h4>
<p>I created my account and then immediately popped over to DynDNS&#8217;s site to see if my credentials actually worked. They did! See image: <div id="attachment_1038" class="wp-caption aligncenter" style="width: 310px"><a href="http://boomshadow.net/wp-content/uploads/2012/10/dyndns-free.png"><img src="http://boomshadow.net/wp-content/uploads/2012/10/dyndns-free-300x196.png" alt="Screenshot of successful creation of free DynDNS account" title="DynDNS Free account" width="300" height="196" class="size-medium wp-image-1038" /></a><p class="wp-caption-text">Click image to see larger view</p></div>
<p>In fact, not only did I have a free DynDNS account, I actually have access to ANOTHER free hostname. As you see in the above picture, it says I&#8217;m using 0 of 1 hostname, even though I&#8217;m already using one. D-Link&#8217;s FAQ only has one question/answer and it states that you can only have 1 single hostname. <a href="https://www.dlinkddns.com/faq" target="_blank">https://www.dlinkddns.com/faq</a>. Well, I&#8217;m here to tell you apparently that&#8217;s not true. You can use DynDNS&#8217;s site interface to create another hostname; simply click on &#8220;Add New Hostname&#8221; and you&#8217;ll be taken to the setup screen. See screenshot: <div id="attachment_1040" class="wp-caption aligncenter" style="width: 293px"><a href="http://boomshadow.net/wp-content/uploads/2012/10/dyndns-another-hostname.png"><img src="http://boomshadow.net/wp-content/uploads/2012/10/dyndns-another-hostname-283x300.png" alt="DynDNS free account gives me access to an additional hostname" title="DynDNS another hostname" width="283" height="300" class="size-medium wp-image-1040" /></a><p class="wp-caption-text">Click image to see larger view</p></div>
<p>I can tell you that my legitimate, free, grandfathered-in DynDNS account doesn&#8217;t have that option. Also, once I add another hostname, the link for creating more hostnames goes away.</p>
<p>I have a few notes of interest: Using D-Link&#8217;s DynamicDNS is probably only for people who purchase and use their D-Link brand routers, though it doesn&#8217;t actually state that anywhere. I don&#8217;t know if these types of accounts are applicable to the 30 days update rule. I would assume so, as their assumption when they created this deal with D-Link was probably that the accounts would be used for that Dynamic DNS section in the router. This means that all active accounts will be on auto-update from the router.</p>
<h4>Conclusion</h4>
<p>In conclusion, you can use D-Link as a proxy for creating not just one but TWO free dynamic hostnames from DynDNS. So long as you keep them updated every 30 days, they should be good. I&#8217;ve been using mine to keep a home server public facing using ddclient as my update tool. I know this loophole is one that may close to new users as well, and then at that time I&#8217;ll have to branch out to other Dynamic DNS providers; but for now, I can keep creating new hostnames if need be, just use a different email account to sign up at <a href="http://www.dlinkddns.com/" target="_blank">D-Link&#8217;s site.</a></p>
<h2>Personal note:</h2>
<p>I don&#8217;t abuse this system. I only have need of 2 Dynamic hostnames, and that&#8217;s all I have made: my grandfathered-in account and the D-Link account. However, I like to know that I have means to create more if need be. Options are nice. </p>
<h4>References</h4>
<ol>
<li><a href="http://www.dyncommunity.com/questions/21580/from-dyn-what-happened-to-free-accounts.html" target="_blank">http://www.dyncommunity.com/questions/21580/from-dyn-what-happened-to-free-accounts.html</a></li>
<li><a href="http://tech.slashdot.org/story/11/12/17/0141213/dyndns-cuts-back-free-dns-options" target="_blank">http://tech.slashdot.org/story/11/12/17/0141213/dyndns-cuts-back-free-dns-options</a></li>
<li><a href="http://www.turnkeylinux.org/forum/general/20100930/dyndns-alternative" target="_blank">http://www.turnkeylinux.org/forum/general/20100930/dyndns-alternative</a></li>
<li><a href="http://michigantelephone.wordpress.com/2012/01/15/dyndns-mostly-discontinues-free-dns-service/" target="_blank">http://michigantelephone.wordpress.com/2012/01/15/dyndns-mostly-discontinues-free-dns-service/</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://boomshadow.net/tech/how-to-still-get-a-free-dyndns-account/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>SSH Language Localization</title>
		<link>http://boomshadow.net/tech/ssh-language-localization/</link>
		<comments>http://boomshadow.net/tech/ssh-language-localization/#comments</comments>
		<pubDate>Fri, 08 Jun 2012 00:09:28 +0000</pubDate>
		<dc:creator>Jacob "Boom Shadow" Tirey</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://boomshadow.net/?p=982</guid>
		<description><![CDATA[Ever wanted to change the local language in terminal on your server? This article will show you how! Farsi, here I come!]]></description>
				<content:encoded><![CDATA[<p># Updates:<br />
# <h7 class="updated">06/20/12</h7> | Revised for more details</p>
<p><a href="http://boomshadow.net/wp-content/uploads/2012/06/translation-service-languages.jpg"><img src="http://boomshadow.net/wp-content/uploads/2012/06/translation-service-languages-150x150.jpg" alt="" title="Flags of the World" width="75" height="75" class="alignleft size-thumbnail wp-image-985" /></a><br />
When you get a new VPS, you&#8217;ve got a powerful new system that is a server all unto yours. There is quite a bit of customization you can do to make it suite your needs. Today, I am going to show you how to change the language of your SSH terminal.</p>
<p>Changing your VPS language setting allows you to type and sort by special characters not available in English. But more than that, it is language localization. You pick not only your language, but your country as well. This allows the server to reset date formats, use of commas and points in numbering systems, display options, etc. Bear in mind that changing VPS language settings won’t translate things such as file names or contents of files.</p>
<p>In addition, most GNU programs on your server use localization, wherein they customize their interface based on the VPS language localization settings. Intelligent applications using internationalization can greatly reduce the difficulty of interfacing with a server for non-English speakers.</p>
<p>While logged into your server via SSH, you can see what the current language setting is by running the following command:</p>
<pre>locale</pre>
<p>The output of the command will be something like this:</p>
<pre>
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
</pre>
<p>en_US is the language code (English) followed by the country code (United States).</p>
<p>To change the language of your system–as well as all the other parameters above–you will modify the LANG. To see list of all the supported locales, run:</p>
<pre>locale -a</pre>
<p>You’ll notice that names on the list are named with the format: Language_Country. Simply looks for the two letter code for language and country that you want. For example, if you want to set it to Spanish/Puerto Rico, you would select: es_PR. If you want to set it to Farsi, you would use: fa_IR</p>
<p>Check out this handy guide to look up the right code for your language and location: <a href="http://lh.2xlibre.net/locales/" target="_blank">http://lh.2xlibre.net/locales/</a></p>
<p>Once you have picked out the language and location you want to use, you will need to edit the following file:</p>
<pre>/etc/sysconfig/i18n</pre>
<p>And then simply modify the line the reads something like this:</p>
<pre>LANG="en_US.UTF-8"</pre>
<p>You will need to close your SSH session and restart a new session for the changes to take effect.</p>
<p>*Note: If you are using Terminal on a Mac, you may need to also type the following for your session to load the updated configuration:</p>
<pre>su -</pre>
<p>If you are having trouble getting these changes to take effect and show up when you initiate another locale command, then check that the default language is not set. In Nano, look at the entire file. Which lines are preceded by hash marks (#)? Those lines are designated as “comments” and not read by programs accessing the file. For example:</p>
<pre>
#LANG="en_US.utf8"
#SUPPORTED="en_US.UTF-8:en_US:en"
#SYSFONT="latarcyrheb-sun16"
LANG="C"
</pre>
<p>In this example, the LANG will always be the default (C). To change this, switch the line that is read by erasing and creating hash marks:</p>
<pre>
#LANG="en_US.utf8"
#SUPPORTED="en_US.UTF-8:en_US:en"
#SYSFONT="latarcyrheb-sun16"
LANG="C"
</pre>
<p>Now the session configuration will be based on the first line–not the fourth–and you can replace the language/location information as desired.</p>
<h4>Example:</h4>
<p>Here is a &#8216;Before&#8217; language change:<br />
<a href="http://boomshadow.net/wp-content/uploads/2012/06/SSH-English.gif"><img src="http://boomshadow.net/wp-content/uploads/2012/06/SSH-English.gif" alt="" title="SSH-English" width="584" height="328" class="aligncenter size-full wp-image-990" /></a></p>
<p>Here is an &#8216;After&#8217; language change (to Farsi):<br />
<a href="http://boomshadow.net/wp-content/uploads/2012/06/SSH-Farsi.gif"><img src="http://boomshadow.net/wp-content/uploads/2012/06/SSH-Farsi.gif" alt="" title="SSH-Farsi" width="601" height="327" class="aligncenter size-full wp-image-991" /></a></p>
<h2>Note about this article</h2>
<p>This article is one I had written for the ServInt blog as part of the &#8216;Tech bench&#8217; series. You can view it on the <a href="http://blog.servint.net/2012/06/08/customizing-language-vps/" title="ServInt Blog" target="_blank">ServInt blog here</a>. They are using my article with my permission.</p>
]]></content:encoded>
			<wfw:commentRss>http://boomshadow.net/tech/ssh-language-localization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to forward &#8211; archive all email for a user</title>
		<link>http://boomshadow.net/tech/forward-all-emails/</link>
		<comments>http://boomshadow.net/tech/forward-all-emails/#comments</comments>
		<pubDate>Thu, 03 May 2012 16:18:57 +0000</pubDate>
		<dc:creator>Jacob "Boom Shadow" Tirey</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[archiving]]></category>
		<category><![CDATA[cpanel]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[exim]]></category>
		<category><![CDATA[forward]]></category>
		<category><![CDATA[whm]]></category>

		<guid isPermaLink="false">http://boomshadow.net/?p=890</guid>
		<description><![CDATA[Ever wanted to archive all of your incoming and outgoing mail, or ever wanted to spy on your employee's mail (if you were to be so dubiously inclined)? Today, I show you how to configure Exim to quietly send a copy of all incoming and outgoing message for an address.]]></description>
				<content:encoded><![CDATA[<p># Updates:<br />
# <h7 class="updated">11/07/12</h7> | As of the release of the new WHM 11.34, some of the archive tasks of this article can be done directly with cPanel. cPanel now has it&#8217;s own built-in support for email archiving. <a href="http://boomshadow.net/tech/cpanel-11-34-features-webinar/" title="cPanel’s Webinar on WHM 11.34 features">See my WHM 11.34 features article here</a>.</p>
<p><a href="http://boomshadow.net/wp-content/uploads/2012/05/Email-Forwarding.gif"><img src="http://boomshadow.net/wp-content/uploads/2012/05/Email-Forwarding-150x150.gif" alt="Email Forwarding icon" title="Email-Forwarding" width="150" height="150" class="alignleft size-thumbnail wp-image-906" /></a></p>
<p>Today I am going to show you something pretty nifty: how to forward a copy of all incoming and outgoing mail for a particular email user. If you are the cautious type, or simply the email hoarding type like myself <img src='http://boomshadow.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  , this can be really handy for easy archival of all your mail. Exim can be configured so that your server will automatically (and quietly) send a copy of every message you send and receive over to another email address. This is all done without you noticing anything extra in the &#8216;To&#8217; or &#8216;CC&#8217; fields. Silent and effective.</p>
<p>This could also be used to secretly keep track of your users&#8217; emails and monitoring what they do. I had a friend of mine recently ask me to help him set this up for him on a new Sales employee he had. He wanted to make sure they were taking care of the clients properly. While I may not personally agree with the privacy concerns of spying on another person&#8217;s email, I acknowledge that it can be used in this purpose and there are those out there who have no problem implementing it for this reason.</p>
<p>However, that is an argument of principles best saved for another time. I personally believe that all knowledge is power and people will do with their lives as they feel is best. I will show you the tech side of how to set this up; you can do with it as you please.</p>
<p>*Note: You will need SSH root access to make the following changes </p>
<h4>Find the Exim System Filter file</h4>
<p>The changes we are making will be to the &#8216;System Filter File&#8217;. Obviously, we&#8217;re gonna need to know where it is located. It could be different on your cPanel box, so be sure to look it up.</p>
<p>Log into WHM and navigate to the section: Main >> Service Configuration >> Exim Configuration Manager. Alternatively, you can simply type &#8216;Exim&#8217; into the search bar and it will be the first result.</p>
<p><a href="http://boomshadow.net/wp-content/uploads/2012/05/WHM-Exim.gif"><img src="http://boomshadow.net/wp-content/uploads/2012/05/WHM-Exim.gif" alt="Exim configuration menu in WHM" title="WHM-Exim" width="550" height="208" class="aligncenter size-full wp-image-897" /></a></p>
<p>Next, scroll down and locate the &#8220;System Filter File&#8221; section. It should list the default location. On my server, it is:</p>
<pre>/etc/cpanel_exim_system_filter</pre>
<p><a href="http://boomshadow.net/wp-content/uploads/2012/05/Exim-default.gif"><img src="http://boomshadow.net/wp-content/uploads/2012/05/Exim-default.gif" alt="Default setting in Exim configuration" title="Exim-default" width="550" height="191" class="aligncenter size-full wp-image-899" /></a></p>
<p>Leave WHM open for now because we will be coming back to it shortly.</p>
<h4>Edit the Exim System Filter file</h4>
<p>One thing I must note is that you will not actually be directly editing the system filter file. <a href="http://forums.cpanel.net/f43/hidden-copies-incoming-outgoing-emails-201801.html#post922442" target="_blank">cPanel staff has stated</a> that if you do, the changes will get overwritten during cPanel updates. Instead, we are going to make a copy of it and make our changes to the new custom file. cPanel updates will not change your custom file.</p>
<p>*Note: Exim version changes, however, WILL overwrite custom files. When cPanel 11.34 comes out, Exim is likely to get a version change. Make sure you back up this file ahead of time. </p>
<p>Let&#8217;s get started. Log into SSH and copy the system filter file:</p>
<pre>cp /etc/cpanel_exim_system_filter /etc/cpanel_exim_system_filter_custom</pre>
<p>Next, edit the newly made file:</p>
<pre>nano /etc/cpanel_exim_system_filter_custom</pre>
<p>And place the following template at the very bottom:</p>
<pre>
### FORWARD ALL INCOMING AND OUTGOING MAIL FOR A USER ###

if ("$h_to:, $h_cc:, $h_bcc" contains "user@domain.com")
   or ("$h_from:" contains "user@domain.com")
then
   unseen deliver "archive-address@domain.com"
endif
</pre>
<p>The code above will send a copy of any email that is sent &#8220;To&#8221;, &#8220;CC&#8221;, and even &#8220;BCC&#8221; to your address. It will also send a copy for all outgoing mail. Be sure to replace the example addresses above with your actual email addresses. Save and exit the file.</p>
<h4>Reconfigure &#038; Restart Exim</h4>
<p>Now, you need to go back to WHM and change the system filter file location. Basically, we&#8217;re going to reconfigured Exim to use that new file we made instead of the default one. Copy and paste the full path to your new file into the 3rd field:</p>
<p><a href="http://boomshadow.net/wp-content/uploads/2012/05/Exim-changed.gif"><img src="http://boomshadow.net/wp-content/uploads/2012/05/Exim-changed.gif" alt="Modified Exim configuration" title="Exim-changed" width="550" height="191" class="aligncenter size-full wp-image-898" /></a></p>
<p>Scroll down and hit &#8216;Save&#8217;. Finally, all you need to do now is restart Exim:</p>
<pre>service exim restart</pre>
<p>And that is that! Your server will now start archiving all your email to the address you specified. You&#8217;re going to start getting a lot of extra mail at that address so be sure you have some automatic message organization setup such as User level filtering in cPanel or Message filters in your email client to sort them all the messages into folders. If not, you may have a little bit of a messy inbox next time you log in <img src='http://boomshadow.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h2>References</h2>
<p>Special thanks goes out to <a href="http://forums.cpanel.net/members/cpaneltristan/" target="_blank">cPanel Tristan</a>. You always know your stuff and are great at helping! I really enjoy getting you in the ticket system and then also finding fixes in the forums that happen to be posted by you as well. It makes my day every time. Research for this article found on the cPanel forums <a href="http://forums.cpanel.net/f43/hidden-copies-incoming-outgoing-emails-201801.html#post828491" target="_blank">here</a></p>
<p>Also, thanks goes to Vinayak on the cPanel forums <a href="http://forums.cpanel.net/f43/want-save-all-outgoing-email-read-later-108285.html#post481941" target="_blank">here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://boomshadow.net/tech/forward-all-emails/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Change a document root on cPanel</title>
		<link>http://boomshadow.net/tech/change-document-root-cpanel/</link>
		<comments>http://boomshadow.net/tech/change-document-root-cpanel/#comments</comments>
		<pubDate>Fri, 30 Mar 2012 12:36:57 +0000</pubDate>
		<dc:creator>Jacob "Boom Shadow" Tirey</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[cpanel]]></category>

		<guid isPermaLink="false">http://boomshadow.net/?p=790</guid>
		<description><![CDATA[How to change the document root for domains on cPanel]]></description>
				<content:encoded><![CDATA[<p><a href="http://boomshadow.net/wp-content/uploads/2012/03/cpanel-logo.gif"><img src="http://boomshadow.net/wp-content/uploads/2012/03/cpanel-logo-150x150.gif" alt="cPanel Logo" title="cPanel Logo" width="150" height="150" class="alignleft size-thumbnail wp-image-809" /></a></p>
<h4>What is the document root?</h4>
<p>When you visit a web site, you are accessing a particular folder on the web server. The server knows to only serve up those files located at that folder to incoming visitors. The location of that web folder is called the &#8220;Document Root&#8221;.</p>
<p>It is similar to using a coat check. You present your ticket to the attendant and they fetch it from the back room.<br />
In this metaphor, the coat is the site you want to visit and the attendant is the web server. The visitor doesn&#8217;t know the exact location where the coat is stored, but the coat does reside at a specific location.</p>
<p>For example, when you visit johns-carpentry.com, the server is pulling up the files at: /home/johnc/public_html. The document root is set by the Apache configuration.</p>
<p>What we are going to discuss today is what if you wanted to change that location? You would need to change the &#8216;Document root&#8217; for the domain. cPanel&#8217;s default location may not serve your needs or you simply want to reorganize. In any case, I&#8217;ll show you how to make that change on cPanel.</p>
<h4>Changing Addon Domains</h4>
<p>There are two types of domains on a cPanel box that can have document roots: Main (primary) domains and Addon domains. Addon domains are easy to change the document root. Simply log into your cPanel and navigate to: Domains >> Addon domains</p>
<p><a href="http://boomshadow.net/wp-content/uploads/2012/03/addon.gif"><img src="http://boomshadow.net/wp-content/uploads/2012/03/addon.gif" alt="Addon domains section in cPanel" title="Addon Domains" width="548" height="184" class="aligncenter size-full wp-image-796" /></a></p>
<p>Next, edit the Addon domain path. To do so, simply click the edit icon next to the path, and type in your new path.</p>
<p><a href="http://boomshadow.net/wp-content/uploads/2012/03/addon-remove.gif"><img src="http://boomshadow.net/wp-content/uploads/2012/03/addon-remove.gif" alt="Remove an addon domain in cPanel" title="Remove Addon" width="548" height="166" class="aligncenter size-full wp-image-799" /></a></p>
<p>It’s that simple!</p>
<h4>Changing Primary domains</h4>
<p>For changing the main/primary domain, you will need to have root SSH access. Edit the following (replacing your user &#038; domain info):</p>
<pre>/var/cpanel/userdata/USERNAME/DOMAIN.COM</pre>
<p>Look for the following line:</p>
<pre>documentroot: /home/USERNAME/public_html</pre>
<p>Modify it according to your needs. Save it and exit. </p>
<p>If you are using an SSL on the domain, be sure to update the SSL&#8217;s template as well:</p>
<pre>
/var/cpanel/userdata/USERNAME/DOMAIN.COM_SSL
documentroot: /home/USERNAME/public_html
</pre>
<p>Then, rebuild the Apache conf and restart Apache:</p>
<pre>/scripts/rebuildhttpdconf
service httpd restart</pre>
<p>The change will be immediate. Simply clear your browser cache and force refresh the page!</p>
<h2>Note about this article</h2>
<p>This article is one I had written for the ServInt blog as part of the &#8216;Tech bench&#8217; series. You can view it on the <a href="http://blog.servint.net/2012/03/30/the-tech-bench-changing-a-document-root-in-cpanel/" title="ServInt Blog" target="_blank">ServInt blog here</a>. They are using my article with my permission.</p>
]]></content:encoded>
			<wfw:commentRss>http://boomshadow.net/tech/change-document-root-cpanel/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to install PHP memcache</title>
		<link>http://boomshadow.net/tech/installs/how-to-install-php-memcache/</link>
		<comments>http://boomshadow.net/tech/installs/how-to-install-php-memcache/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 13:32:25 +0000</pubDate>
		<dc:creator>Jacob "Boom Shadow" Tirey</dc:creator>
				<category><![CDATA[Software Installations]]></category>
		<category><![CDATA[caching]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[pecl]]></category>
		<category><![CDATA[php modules]]></category>

		<guid isPermaLink="false">http://boomshadow.net/?p=755</guid>
		<description><![CDATA[This guide will show you how to install PHP memcache via PECL.]]></description>
				<content:encoded><![CDATA[<p><a href="http://boomshadow.net/wp-content/uploads/2012/02/pecl-logo.gif"><img src="http://boomshadow.net/wp-content/uploads/2012/02/pecl-logo.gif" alt="The logo for PECL library" title="PECL logo" width="115" height="115" class="alignleft size-full wp-image-760" /></a><br />
This guide will help you install PHP Memcache on a CentOS server.</p>
<h4>What is PHP memcache?</h4>
<p>In my <a href="http://boomshadow.net/tech/installs/how-to-install-memcached/" target="_blank">previous article</a>, I showed you how to install Memcached, the service daemon. Now, if you would like your PHP software to interface with that daemon, you will want to install a PHP extension for it.</p>
<p>There are actually two separate implementations of a PHP Client that wraps the memcached (daemon); both are provided via the <a href="http://pecl.php.net/" target="_blank">PECL library</a>. One is called <a href="http://pecl.php.net/package/memcache" target="_blank">&#8216;memcache&#8217;</a> and the other is called <a href="http://pecl.php.net/package/memcached" target="_blank">&#8216;memcached&#8217;</a>. I know that it is a little confusing that &#8216;memcached&#8217; shares the same name as the daemon itself, but it IS a separate PHP wrapper.</p>
<p>This article will focus on installing &#8216;memcache&#8217; as it is the most commonly used. You can use the information to install &#8216;memcached&#8217; as well; the installation steps are the same. The main difference is that &#8216;memcached&#8217; requires the libMemcached library. You can see a comparison of the two different PHP clients here: <a href="http://code.google.com/p/memcached/wiki/PHPClientComparison" target="_blank">http://code.google.com/p/memcached/wiki/PHPClientComparison</a></p>
<h4>Installation, the quick method</h4>
<p>The easiest method is to simply use PECL&#8217;s &#8216;install&#8217; command. This will grab the latest stable release, configure it with the default options, and add it to the server&#8217;s php.ini:</p>
<pre>pecl install memcache</pre>
<p>*Note: Un-installation is just as easy:</p>
<pre>pecl uninstall memcache</pre>
<h4>Installation, the manual method</h4>
<p>The quick &#8216;install&#8217; method uses the default configuration options and should serve most peoples&#8217; purposes. However, if you need more control over the installation options, you can manually install from source and add it flags as you need.</p>
<p>Download the source package via PECL:</p>
<pre>
cd /usr/local/src/
pecl download memcache
</pre>
<p>Unpack the tar and enter into the newly extracted directory (be sure to replace the X&#8217;s with your downloaded version):</p>
<pre>
tar -xvzf memcache-X.X.X.tgz
cd memcache-X.X.X
</pre>
<p>Configure and install:</p>
<pre>
phpize
./configure &#038;&#038; make &#038;&#038; make install
</pre>
<h4>Verify the install</h4>
<p>Verify the installation by displaying all the installed PHP modules. See if &#8216;memcache&#8217; is listed:</p>
<pre>
php -m
memcache
</pre>
<h4>Problems with manual installation</h4>
<p>The &#8216;make install&#8217; should load the module into your server&#8217;s extension directory automatically. However, if you do not see memcache listed in a &#8216;php -m&#8217;, you will need to add the module manually</p>
<p>First, you&#8217;ll want to very the location of your server&#8217;s extensions directory:</p>
<pre>grep extension_dir /usr/local/lib/php.ini</pre>
<p>It should return something similar to the following:</p>
<pre>extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613"</pre>
<p>Next, copy the memcache module into that directory (be sure to replace the path with the one found on your server):</p>
<pre>cp modules/memcache.so /usr/local/lib/php/extensions/no-debug-non-zts-20060613</pre>
<p>Finally, add the module to your php.ini:</p>
<pre>echo 'extension=memcache.so' >> /usr/local/lib/php.ini</pre>
<h4>Thoughts</h4>
<p>It used to be a common issue that the quick &#8216;install&#8217; method could not be used for servers where the /tmp partition was mounted &#8216;noexec&#8217;. The problem was that the &#8216;configure&#8217; process could not execute because the PECL client downloaded the module into in /tmp. When /tmp is mounted &#8216;noexec&#8217;, servers cannot execute scripts from /tmp.</p>
<p>However, PECL now downloads and executes the script from /root/tmp. No need to worry about compiler errors with /tmp. You can use the &#8216;install&#8217; method even with a secured /tmp.</p>
<h2>Note about this article</h2>
<p>This article is one I had written for the ServInt blog as part of the &#8216;Tech bench&#8217; series. You can view it on the <a href="http://blog.servint.net/2012/03/16/the-tech-bench-how-to-install-php-memcache/" title="ServInt Blog" target="_blank">ServInt blog here</a>. They are using my article with my permission.</p>
]]></content:encoded>
			<wfw:commentRss>http://boomshadow.net/tech/installs/how-to-install-php-memcache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to install Memcached</title>
		<link>http://boomshadow.net/tech/installs/how-to-install-memcached/</link>
		<comments>http://boomshadow.net/tech/installs/how-to-install-memcached/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 19:42:38 +0000</pubDate>
		<dc:creator>Jacob "Boom Shadow" Tirey</dc:creator>
				<category><![CDATA[Software Installations]]></category>
		<category><![CDATA[caching]]></category>
		<category><![CDATA[centos 4]]></category>
		<category><![CDATA[centos 5]]></category>
		<category><![CDATA[centos 6]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://boomshadow.net/?p=704</guid>
		<description><![CDATA[Memcache is one of the most popular caching tools used in hosting today. This guide will show you how to install it.]]></description>
				<content:encoded><![CDATA[<p># Updates<br />
# <h7 class="updated">01/02/13</h7> &#8211; Updated RPM locations</p>
<p><a href="http://boomshadow.net/wp-content/uploads/2012/02/memcached-icon.gif"><img src="http://boomshadow.net/wp-content/uploads/2012/02/memcached-icon-150x150.gif" alt="Memcached icon with Zoolander critters" title="Memcached Icon" width="100" height="100" class="alignleft size-thumbnail wp-image-710" /></a>This guide will help you setup Memcached on a CentOS server.</p>
<h4>What is caching</h4>
<p>Before diving into Memcache specifically, let&#8217;s take a step back. What is caching? Why should you care and why should you use it? Caching is used for two very important reasons: to speed up the delivery of the pages and to alleviate system resources. Caching is used to speed up dynamic sites; database driven sites will benefit most form caching. Think about a WordPress site. Each page you visit is not an actually file, but rather an amalgamation of the theme, widgets, posts, footers, headers, etc&#8230; Each time a page is accessed, PHP will generate the page requested on the fly from the database. It takes time to query the database to create the page. These database queries put a strain on the resources of your server.</p>
<p>However, what if instead of continually generating a new page, the same page, for every visitor, you were to turn those pages into static HTML files? No database querying is needed for the new visitors. A static file can be served up much faster and with significantly less resource consumption. Your visitors see their requested page sooner, and you save on CPU cycles. Everyone is happy. This is what caching does.</p>
<h4>What is Memcached</h4>
<p>Memcached is a general-purpose distributed memory caching system. It is one of the most popular caching tools and is used in such popular sites as: YouTube, Reddit, Zynga, Facebook, and Twitter.</p>
<p>According to Memcached&#8217;s <a href="http://www.memcached.org/" target="_blank">official site</a>, Memcached is defined as: Free &#038; open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.</p>
<p>In simpler terms, it decreases database load by storing objects in memory.</p>
<h4>Installing Memcached (daemon)</h4>
<p>The quickest and easiest method would be to install via Yum. First, you must grab the RPM that matches your OS:</p>
<p>CentOS 6 (64 bit):</p>
<pre>su -c 'rpm -Uvh http://mirrors.kernel.org/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm'</pre>
<p>CentOS 6 (32 bit):</p>
<pre>su -c 'rpm -Uvh http://mirrors.kernel.org/fedora-epel/6/i386/epel-release-6-8.noarch.rpm'</pre>
<p>CentOS 5 (64 bit):</p>
<pre>su -c 'rpm -Uvh http://mirrors.kernel.org/fedora-epel/5/x86_64/epel-release-5-4.noarch.rpm'</pre>
<p>CentOS 5 (32 bit):</p>
<pre>su -c 'rpm -Uvh http://mirrors.kernel.org/fedora-epel/5/i386/epel-release-5-4.noarch.rpm'</pre>
<p>CentOS 4 (32 bit):</p>
<pre>su -c 'rpm -Uvh http://mirrors.kernel.org/fedora-epel/4/i386/epel-release-4-10.noarch.rpm'</pre>
<p>Now, to install it with Yum:</p>
<pre>yum install memcached</pre>
<p>Start the memcached service:</p>
<pre>/etc/init.d/memcached start</pre>
<p>Configure the memcached service to start when the server boots:</p>
<pre>chkconfig memcached on</pre>
<p>Finally, disable the RPM so that it is not used for future Yum functions:</p>
<pre>perl -pi -e "s/enabled=1/enabled=0/g;" /etc/yum.repos.d/epel.repo</pre>
<h4>Testing</h4>
<p>It&#8217;s always a good idea to check your work. Make sure that memcached is running:</p>
<pre>ps auwx | grep memcache</pre>
<h4>PHP memcache</h4>
<p>For information on how to install the PHP extension so that your PHP software can interface with memcached (daemon), see my article here: <a href="http://boomshadow.net/tech/installs/how-to-install-php-memcache/" target="_blank">How to install PHP memcache</a></p>
<h2>Note about this article</h2>
<p>This article is one I had written for the ServInt blog as part of the &#8216;Tech bench&#8217; series. You can view it on the <a href="http://blog.servint.net/2012/02/20/the-tech-bench-memcached/" title="ServInt Blog" target="_blank">ServInt blog here</a>. They are using my article with my permission.</p>
]]></content:encoded>
			<wfw:commentRss>http://boomshadow.net/tech/installs/how-to-install-memcached/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Spoofed Bingbot attacks against WP</title>
		<link>http://boomshadow.net/tech/fixes/spoofed-bingbot/</link>
		<comments>http://boomshadow.net/tech/fixes/spoofed-bingbot/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 17:19:04 +0000</pubDate>
		<dc:creator>Jacob "Boom Shadow" Tirey</dc:creator>
				<category><![CDATA[Fixes]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[investigation]]></category>
		<category><![CDATA[mage]]></category>
		<category><![CDATA[spoofing]]></category>
		<category><![CDATA[user agent]]></category>
		<category><![CDATA[vhost]]></category>

		<guid isPermaLink="false">http://boomshadow.net/?p=648</guid>
		<description><![CDATA[Been seeing an influx of bot traffic attacking your site, bringing your server to it's knees? Well, I have a solution for that.]]></description>
				<content:encoded><![CDATA[<p># Updates<br />
# <h7 class="updated">06/18/12</h7> &#8211; Bingbot attack returns, but attacks the wp-admin folder instead of just the login page. Updated to patch that. Also added 403 Error handling<br />
# 02/04/12 &#8211; Revised wording to reinforce Bing&#8217;s perspective<br />
# 02/02/12 &#8211; Modified block code to identify bingbot as &#8216;badbingbot&#8217; in case &#8216;bingbot&#8217; is already being used somewhere</p>
<p><a href="http://boomshadow.net/wp-content/uploads/2012/02/bingbot-wordpress.gif"><img src="http://boomshadow.net/wp-content/uploads/2012/02/bingbot-wordpress-150x150.gif" alt="Bingbot WordPress pic" title="Bingbot WordPress" width="150" height="150" class="alignleft size-thumbnail wp-image-676" /></a><br />
In the last 24 hours, I have seen a large scale attack on the admin logins for thousands of WordPress sites. The attackers are using the <a href="http://whatsmyuseragent.com/WhatsAUserAgent.asp" target="_blank">User Agent</a> &#8216;Bingbot&#8217;. Bingbot certainly is NOT the culprit in these attacks, but is, unfortunately, being spoofed. These spoofing bots are attacking the wp-admin page. So far, I have only seen this affect WP Mage and Mage Monster users.</p>
<p>A brute force attack on any login is certainly undesirable; you obviously don&#8217;t want any unauthorized person accessing your admin area. However, the real problem comes from the CPU strain this is putting on the hosting server. These constant requests to hundreds of websites on the server will drive up the CPU load, effectively tying up the resources. The server will not be able to serve up pages to legitimate traffic or legitimate search engine bots that are trying to crawl the sites.</p>
<p>There is a solution you can use to combat this problem. The solution is to block the Bingbot user agent from accessing your these admin pages. An IP based firewall block would do no good as the source IP&#8217;s have no common denominator; the IP&#8217;s are too spread out and come from many different geographical locations.</p>
<p>By implementing the following fix, you can reduce the loads back to normal operating levels allowing your site&#8217;s pages to load once again and you will not affect your rank with Bing. After a couple of days, the attack should have subsided and you should be able to safely reverse the changes. However, per Duane Forrester of Bing&#8217;s webmaster tools, you do not have to undo the block. There is no harm in permanently preventing your admin pages from being indexed (for reference, see <a href="http://boomshadow.net/tech/fixes/spoofed-bingbot/#comment-428950333">his comment here</a>).</p>
<h2>Are you affected?</h2>
<p>You can run a quick check to see if your sites are being hit with this spoofed Bingbot attack. Check your sites&#8217; domlogs and look for any Bingbot <a href="http://whatsmyuseragent.com/WhatsAUserAgent.asp" target="_blank">User Agent</a> requests that are hitting WordPress admin pages:</p>
<pre>
grep bingbot /usr/local/apache/domlogs/* | grep wp-login
</pre>
<p>If you receive numerous results from running that, especially from various IP addresses, it means that you are being affected. If you see many &#8216;POST&#8217; commands in there, it means they are also trying to log into WordPress.</p>
<p>Example:</p>
<pre>
/usr/local/apache/domlogs/domain.com:24.153.219.159 - - [01/Feb/2012:15:27:18 -0500] "GET /wp-login.php?redirect_to=http%3A%2F%2FDOMAIN.COM%2Fwp-admin%2F&#038;reauth=1 HTTP/1.1" 200 2206 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
/usr/local/apache/domlogs/domain.com:24.153.219.159 - - [01/Feb/2012:15:27:18 -0500] "POST /wp-login.php HTTP/1.1" 200 3084 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
</pre>
<h2>How to block them</h2>
<p>Now that you&#8217;ve verified that this directly affects you, time to block them and restore your server&#8217;s vitality.</p>
<h4>Edit the pre-virtual host conf</h4>
<p>We need to tell the server what is a &#8220;bad bot&#8221;. In this case, it is Bingbot. Then, we tell it to block it:</p>
<pre>
nano /usr/local/apache/conf/includes/pre_virtualhost_global.conf
</pre>
<p>At the bottom of the file add:</p>
<pre>
SetEnvIfNoCase User-Agent &quot;.*bingbot&quot; badbingbot

&lt;Files wp-login.php&gt;
	order allow,deny
	allow from all
	Deny from env=badbingbot
&lt;/Files&gt;
&lt;Location /wp-admin/&gt;
        order allow,deny
        allow from all
        Deny from env=badbingbot
&lt;/Location&gt;

</pre>
<p>If you do not want to block Bingbot on every domain and would rather only block it on a few particular affected domains, you can, instead, make the change to each domains&#8217; virtual host via an include file. For more information, see cPanel&#8217;s documentation here: <a href="http://docs.cpanel.net/twiki/bin/view/EasyApache3/InsideVHost" target="_blank">http://docs.cpanel.net/twiki/bin/view/EasyApache3/InsideVHost</a></p>
<h4>Restart Apache</h4>
<p>Now it is time to restart Apache so that our changes can take effect:</p>
<pre>
service httpd restart
</pre>
<h4>Test it</h4>
<p>Which Apache restarted, you should see your CPU load start dropping immediately. You will want to test it to make sure that bingbot is successfully blocked. Do what the attackers are doing, access your page while spoofing your User agent as Bingbot:</p>
<pre>
wget -U "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" http://domain.com/wp-admin/
</pre>
<p>Be sure to change &#8216;domain.com&#8217; with your actual domain name. You should receive a 403 Forbidden error. If not, the file that is downloaded should be completely empty, meaning no content was served up.</p>
<h2>403 Error Handling</h2>
<p>When successfully blocked, the bot will be sent to the 403 Forbidden page (as you saw in the test above). However, depending on your theme, the 403 page may be a custom error page that still loads part of the site and many of the plugins. This will still cause a heavy strain on the server because it has to process this 403 error page for every request. You have two options: Option #1. Set the 403 page for every affected site to be a lightweight page with little text. You will want a minimalistic page that will not cause large CPU load if it is accessed dozens or even hundreds of times. Option #2. Disable the 403 page temporarily.</p>
<p>If you have many WordPress sites that are all being affected (this typically would fit Mage), then it would just be quicker to opt for Option #2.</p>
<p>To do that, edit the following file:</p>
<pre>/usr/local/apache/conf/includes/errordocument.conf</pre>
<p>Comment out the line about 403 Forbidden. Once done, the top of the file will look like the following:</p>
<pre>
# 400 - Bad Request
ErrorDocument 400 /400.shtml

# 401 - Unauthorized
ErrorDocument 401 /401.shtml

# 402 - Payment Required
ErrorDocument 402 /402.shtml

# 403 - Forbidden
#ErrorDocument 403 /403.shtml

# 404 - Not Found
ErrorDocument 404 /404.shtml 
</pre>
<p>Then you must restart Apache and you&#8217;re done! The load issues should clear up.</p>
<h2>Notes:</h2>
<p>The attack should subside within a few days. You do not have to undo your changes you made. You can leave the admin page blocks in there. No search engine should ever need to index or even access your admin pages. This is true for any CMS, not just WordPress. </p>
<p>If you have implemented the disabling of the 403 Page, be sure to undo that one. You may actually want your 404 pages back when the attack has passed <img src='http://boomshadow.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://boomshadow.net/tech/fixes/spoofed-bingbot/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Auto fix for file permissions and ownership</title>
		<link>http://boomshadow.net/tech/fixes/fixperms-script/</link>
		<comments>http://boomshadow.net/tech/fixes/fixperms-script/#comments</comments>
		<pubDate>Sat, 22 Oct 2011 08:03:16 +0000</pubDate>
		<dc:creator>Jacob "Boom Shadow" Tirey</dc:creator>
				<category><![CDATA[Fixes]]></category>
		<category><![CDATA[Tools-Utilities]]></category>
		<category><![CDATA[403 forbidden]]></category>
		<category><![CDATA[500 internal server error]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[fastcgi]]></category>
		<category><![CDATA[fcgi]]></category>
		<category><![CDATA[fixperms]]></category>
		<category><![CDATA[ownership]]></category>
		<category><![CDATA[permissions]]></category>
		<category><![CDATA[suphp]]></category>

		<guid isPermaLink="false">http://boomshadow.net/?p=570</guid>
		<description><![CDATA[Ever get a '403 Forbidden error' or a '500 internal server error' due to bad permissions? It happens. Here is an easy automated fix for that!]]></description>
				<content:encoded><![CDATA[<p><br />
<div class="scdom-wrapper"><div class="scdom-notification"><div class="scdom-notification-information"><h6 class="scdom-notification-title">Updated: 03/30/13</h6><div class="scdom-notification-content"><p><a href="#changelog">Click here to see the Change Log</a></p>
</div></div></div></div>
<p><a href="http://boomshadow.net/wp-content/uploads/2011/10/fixperms.gif"><img src="http://boomshadow.net/wp-content/uploads/2011/10/fixperms-150x150.gif" alt="Fixperms, fix permissions" title="fixperms" width="150" height="150" class="alignleft size-thumbnail wp-image-587" /></a></p>
<p>
suPHP and FastCGI require files and folders to have a specific set of permissions/ownership from other handlers. Without these permissions set you will see a lot of errors such as: &#8220;403 Forbidden&#8221;, &#8220;500 Internal Server Error&#8221;, or simply generic errors that commonly have the word &#8216;permission&#8217; in them.</p>

<p>It can be very time consuming to track down and check file permissions across a whole server. Luckily, fixing this on a cPanel box can be scripted. This gives us a quick and very easy script you can wget to any cPanel server. Simply run the &#8216;fixperms&#8217; script, specifying the user (or all users), sit back and watch the errors just disappear. I use this script daily in my administrative work and it never fails! It is simply a good generic fix if you cannot find your permission problem, or if you have just switched your handler and need a quick way to change every user account on the server.</p>
<p>Credit does not go to me though. A good buddy of mine, <a href="http://colinrd.com/" target="_blank">Colin R.</a>, wrote this for ServInt. Thanks Colin for making lives easier!</p>
<p><strong>***WARNING!!!</strong> The following scripts are intended for <strong>suPHP</strong> or <strong>FastCGI</strong>. If you are not running either of these two handlers, be aware of how the script works and the changes it makes. The code is posted at the end of this article; please take a moment to review it. For example, when running DSO, some files/folders may need to be owned by &#8216;nobody&#8217; in order to function properly (such as in certain WordPress functions or PHP based file uploads). Running this fixperms will set everything to USER:USER. Under DSO, this is potentially not a problem for most sites, except a few core functions may not work. You can always change specific files later if any errors pop up.</p>
<p>Furthermore, it is highly recommended that you run a full backup of your server before running fixperms or any other script that makes changes to multiple files.</p>
<p>This &#8216;fixperms&#8217; script is intended for cPanel servers only. It is dependent on cPanel&#8217;s internal scripts and file structure. If you&#8217;re on anything else (such as Plesk), it will simply fail to run. It won&#8217;t be able to do anything.</p>
<p>I know that criteria sounds very specific, but those two conditions cover a large number of the reseller/multi-user hosting servers out there. And that&#8217;s really the crowd that would benefit most from an automated script such as this.</p>
<p>That all being said, if you are running suPHP or FastCGI, press on; for this script will work flawlessly for you and potentially save you a TON of time &#038; hassle.</p>
<h2>Fixperms &#8211; for one single user</h2>
<p>To use the fixperms script, simply log into your server as root, wget the file from our server, then run it. Type in the cPanel username and it will run only for that particular account.</p>
<p>It does not matter which directory you are in when you run fixperms. You can be in the user’s home directory, the server root, etc. The script will not affect anything outside of the particular user’s folder.</p>
<pre>
wget boomshadow.net/tools-utils/fixperms.sh
sh ./fixperms.sh -a USER-NAME
</pre>
<h2>Fixperms &#8211; for all of the users</h2>
<p>If you would like fix the permissions for every user on your cPanel server, simply use the &#8216;-all&#8217; option:</p>
<pre>
wget boomshadow.net/tools-utils/fixperms.sh
sh ./fixperms.sh -all
</pre>
<h4>Verbosity of Fixperms</h2>
<p>By default, the script runs in a &#8216;quiet&#8217; mode with minimal display. However, if you&#8217;re like me, you may want to see everything that is happening. You can turn on verbosity and have the script print to the screen everything that is being changed. I find this extremely useful when fixing large accounts that have many files. You can watch the changes as a sort of &#8216;progress bar&#8217; of completion. The &#8216;-v&#8217; option can be used per account or with all accounts.</p>
<p>For one single account:</p>
<pre>
sh ./fixperms.sh -v -a USER-NAME
</pre>
<p>For all accounts:</p>
<pre>
sh ./fixperms.sh -v -all
</pre>

<h2>The code itself, what&#8217;s in it?</h2>
<p>I understand that it can be a big security concern to simply &#8216;wget&#8217; a file from a website you found, and then blindly run it on a production server. I understand your fear; I&#8217;m right there with you and would likewise be leery and very hesitant. However, I promise you that there is no malicious intent in this or anything you will ever get from my site. I have pasted the content of the file below for your examination.</p>
<div class="scdom-wrapper"><div class="scdom-accordions-widget"><div class="scdom-accordions-title"><h6 class="scdom-accordions-trigger-green"><a href="#">Click here to see the code:</a></h6></div><div class="scdom-accordions-content-green"><pre>
#! /bin/bash
#
# Date: Jan 26th 2012
# Author: Colin R.
# Revisions: Jacob "Boom Shadow" Tirey (boomshadow.net)
# Fixperms script for ServInt
#
#   Fixperms script for cPanel servers running suPHP or FastCGI.
#   Written for ServInt.net
#   Copyright (C) 2012 Colin R.
#
#   This program is free software: you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation, either version 3 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details. http://www.gnu.org/licenses/


# Set verbose to null
verbose=""


#Print the help text
helptext () {
    tput bold
    tput setaf 2
    echo "Fix perms script help:"
    echo "Sets file/directory permissions to match suPHP and FastCGI schemes"
    echo "USAGE: fixperms [options] -a account_name"
    echo "-------"
    echo "Options:"
    echo "-h or --help: print this screen and exit"
    echo "-v: verbose output"
    echo "-all: run on all cPanel accounts"
    echo "--account or -a: specify a cPanel account"
    tput sgr0
    exit 0
}

# Main workhorse, fix perms per account passed to it
fixperms () {

  #Get account from what is passed to the function
  account=$1

  #Check account against cPanel users file
  if ! grep $account /var/cpanel/users/*
  then
    tput bold
    tput setaf 1
    echo "Invalid cPanel account"
    tput sgr0
    exit 0
  fi

  #Make sure account isn't blank
  if [ -z $account ]
  then
    tput bold
    tput setaf 1
    echo "Need an account name!"
    tput sgr0
    helptext
  #Else, start doing work
  else
    tput bold
    tput setaf 4
    echo "Fixing perms for $account:"
    tput setaf 3
    echo "------------------------"
    tput setaf 4
    echo "Fixing website files...."
    tput sgr0
    #Fix individual files in public_html
    find /home/$account/public_html -type d -exec chmod $verbose 755 {} \;
    find /home/$account/public_html -type f | xargs -d$'\n' -r chmod $verbose 644
    find /home/$account/public_html -name '*.cgi' -o -name '*.pl' | xargs -r chmod $verbose 755
    chown $verbose -R $account:$account /home/$account/public_html/*
    find /home/$account/* -name .htaccess -exec chown $verbose $account.$account {} \;

    tput bold
    tput setaf 4
    echo "Fixing public_html...."
    tput sgr0
    #Fix perms of public_html itself
    chown $verbose $account:nobody /home/$account/public_html
    chmod $verbose 750 /home/$account/public_html

    #Fix subdomains that lie outside of public_html
    tput setaf 3
    tput bold
    echo "------------------------"
    tput setaf 4
    echo "Fixing any domains with a document root outside of public_html...."
    for SUBDOMAIN in $(grep -i document /var/cpanel/userdata/$account/* | awk '{print $2}' | grep home | grep -v public_html)
    do
	tput bold
	tput setaf 4
	echo "Fixing sub/addon domain document root $SUBDOMAIN...."
	tput sgr0
	find $SUBDOMAIN -type d -exec chmod $verbose 755 {} \;
	find $SUBDOMAIN -type f | xargs -d$'\n' -r chmod $verbose 644
  	find $SUBDOMAIN -name '*.cgi' -o -name '*.pl' | xargs -r chmod $verbose 755
    chown $verbose -R $account:$account $SUBDOMAIN
    find $SUBDOMAIN -name .htaccess -exec chown $verbose $account.$account {} \;
    done

	#Finished
    tput bold
    tput setaf 3
    echo "Finished!"
	echo "------------------------"
	printf "\n\n"
    tput sgr0
  fi

  return 0
}

#Parses all users through cPanel's users file
all () {
    cd /var/cpanel/users
    for user in *
    do
	fixperms $user
    done
}

#Main function, switches options passed to it
case "$1" in

    -h) helptext
	;;
    --help) helptext
	    ;;
    -v) verbose="-v"

	case "$2" in

		-all) all
		       ;;
		--account) fixperms "$3"
			   ;;
		-a) fixperms "$3"
		    ;;
		*) tput bold
     		   tput setaf 1
		   echo "Invalid Option!"
		   helptext
		   ;;
	esac
	;;

    -all) all
	  ;;
    --account) fixperms "$2"
      	 	;;
    -a) fixperms "$2"
	;;
    *)
       tput bold
       tput setaf 1
       echo "Invalid Option!"
       helptext
       ;;
esac
</pre>
</div></div></div><div class="scdom-clear-fix">&nbsp;</div>
<p>So there you have it. An effective permissions fix for your cPanel account. When you run this, people will think you&#8217;re a hero! So, go forth and save your users from the evils of site errors!</p>
<h2>Note about this article</h2>
<p>This article is one I had written for the ServInt blog as part of the &#8216;Tech bench&#8217; series. You can view it on the <a href="http://blog.servint.net/2012/01/27/the-tech-bench-a-script-for-fixing-file-permissions/" title="ServInt Blog" target="_blank">ServInt blog here</a>. They are using my article with my permission.</p>
<h2><a name="changelog"></a><a href="#changelog">Change Log:</a></h2>
<div class="scdom-wrapper"><div class="scdom-list"><div class="scdom-list-seven"><ul>
<li><p><h7 class="updated">03/30/13</h7> | Added support for Subdomains and Addon domains that have their document root outside the public_html folder, Cleaned up the output display, Removed the cPanel mail perms script because it essentially does nothing, moved fixperms.sh location to a central &#8216;utilities&#8217; folder (left a 301 redirect for the old location)</p>
</li>
<li><p>01/03/13 | Corrected the inconsistency between using -all and &#8211;all (when employing verbosity)</p>
</li>
<li><p>06/03/12 | Updated warning verbage for DSO</p>
</li>
<li><p>05/10/12 | Bug fix for file names that contain special characters</p>
</li>
<li><p>01/26/12 | New feature rich script written by Colin R.</p>
</li>
</ul></div></div></div>
]]></content:encoded>
			<wfw:commentRss>http://boomshadow.net/tech/fixes/fixperms-script/feed/</wfw:commentRss>
		<slash:comments>51</slash:comments>
		</item>
	</channel>
</rss>
