<?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>www.collazo.ws &#187; Code</title>
	<atom:link href="http://www.collazo.ws/category/code/feed" rel="self" type="application/rss+xml" />
	<link>http://www.collazo.ws</link>
	<description>A little nothing about something</description>
	<lastBuildDate>Tue, 30 Aug 2011 20:52:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Uploading to Rackspace Cloud Files with PHP</title>
		<link>http://www.collazo.ws/2011/08/30/uploading-to-rackspace-cloud-files-with-php</link>
		<comments>http://www.collazo.ws/2011/08/30/uploading-to-rackspace-cloud-files-with-php#comments</comments>
		<pubDate>Tue, 30 Aug 2011 20:50:25 +0000</pubDate>
		<dc:creator>robert</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Rackspace]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[files]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[rackspace]]></category>

		<guid isPermaLink="false">http://www.collazo.ws/?p=1104</guid>
		<description><![CDATA[<a href="http://www.collazo.ws/2011/08/30/uploading-to-rackspace-cloud-files-with-php" title="Uploading to Rackspace Cloud Files with PHP"></a>Someone recently asked me if I knew of a web based uploader that returned the Akamai CDN URL of the file. I looked around and found this site but it wasn&#8217;t quite what was wanted. I decided to edit the &#8230;<p class="read-more"><a href="http://www.collazo.ws/2011/08/30/uploading-to-rackspace-cloud-files-with-php">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.collazo.ws/2011/08/30/uploading-to-rackspace-cloud-files-with-php" title="Uploading to Rackspace Cloud Files with PHP"></a><p>Someone recently asked me if I knew of a web based uploader that returned the Akamai CDN URL of the file. I looked around and found <a target="_blank" href="http://www.thetutorialblog.com/php/uploading-files-to-rackspace-cloud-mosso-using-php-api/" title="Tutorial on uploading files to Rackspace Cloud using the PHP API" target="_blank">this site</a> but it wasn&#8217;t quite what was wanted. I decided to edit the code in the example from that site and came up with this.<br />
<span id="more-1104"></span><br />
First, you&#8217;ll need the PHP bindings for Rackspace Cloud Files. They can be found <a target="_blank" href="https://github.com/rackspace/php-cloudfiles" title="Github link to PHP bindings for Rackspace Cloud Files API" target="_blank">here</a>. You&#8217;ll need to put the files cloudfiles.php, cloudfiles_http.php, and cloudfiles_exceptions.php in directory on your web server.</p>
<p>Next, save the following code as &#8220;index.html&#8221;:</p>
<div class="geshi html4strict">
<div class="head"><strong>&#8220;index.html&#8221;</strong></div>
<ol>
<li class="li1">
<div class="de1"><span class="sc0">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2"><span class="kw2">&lt;html</span> xmlns<span class="sy0">=</span><span class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span><span class="kw2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2"><span class="kw2">&lt;head&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2"><span class="kw2">&lt;title&gt;</span></span>Upload to Rackspace Cloud Files<span class="sc2"><span class="kw2">&lt;/title&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2"><span class="kw2">&lt;meta</span> <span class="kw3">http-equiv</span><span class="sy0">=</span><span class="st0">&quot;Content-type&quot;</span> <span class="kw3">content</span><span class="sy0">=</span><span class="st0">&quot;text/html;charset=UTF-8&quot;</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2"><span class="kw2">&lt;/head&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2"><span class="kw2">&lt;body&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2"><span class="kw2">&lt;form</span> <span class="kw3">action</span><span class="sy0">=</span><span class="st0">&quot;upload.php&quot;</span> <span class="kw3">enctype</span><span class="sy0">=</span><span class="st0">&quot;multipart/form-data&quot;</span> <span class="kw3">method</span><span class="sy0">=</span><span class="st0">&quot;POST&quot;</span><span class="kw2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; Username: <span class="sc2"><span class="kw2">&lt;input</span> <span class="kw3">name</span><span class="sy0">=</span><span class="st0">&quot;username&quot;</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text&quot;</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; Key: <span class="sc2"><span class="kw2">&lt;input</span> <span class="kw3">name</span><span class="sy0">=</span><span class="st0">&quot;key&quot;</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;password&quot;</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; Container: <span class="sc2"><span class="kw2">&lt;input</span> <span class="kw3">name</span><span class="sy0">=</span><span class="st0">&quot;container&quot;</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text&quot;</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span> <span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; File: <span class="sc2"><span class="kw2">&lt;input</span> <span class="kw3">name</span><span class="sy0">=</span><span class="st0">&quot;upload&quot;</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;file&quot;</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="sc2"><span class="kw2">&lt;input</span> <span class="kw3">name</span><span class="sy0">=</span><span class="st0">&quot;submit&quot;</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;submit&quot;</span> <span class="kw3">value</span><span class="sy0">=</span><span class="st0">&quot;Upload To Rackspace!&quot;</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2"><span class="kw2">&lt;/form&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2"><span class="kw2">&lt;/body&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2"><span class="kw2">&lt;/html&gt;</span></span></div>
</li>
</ol>
</div>
<p>After that is saved, create a new file called &#8220;upload.php&#8221; and save the following:</p>
<div class="geshi php">
<div class="head"><strong>&#8220;upload.php&#8221;</strong></div>
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Turn on error reporting so we can see if there are any problems</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">error_reporting</span><span class="br0">&#40;</span><span class="kw2">E_ALL</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">ini_set</span><span class="br0">&#40;</span><span class="st0">&#39;display_errors&#39;</span><span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// include the API</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">require</span><span class="br0">&#40;</span><span class="st0">&#39;cloudfiles.php&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// cloud info</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$username</span> <span class="sy0">=</span> <span class="re1">$_POST</span><span class="br0">&#91;</span><span class="st0">&#39;username&#39;</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="co1">// username</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$key</span> <span class="sy0">=</span> <span class="re1">$_POST</span><span class="br0">&#91;</span><span class="st0">&#39;key&#39;</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="co1">// api key</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$container</span> <span class="sy0">=</span> <span class="re1">$_POST</span><span class="br0">&#91;</span><span class="st0">&#39;container&#39;</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="co1">// container name</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">ob_start</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Print some information regarding who and where</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;Username: $username&lt;br/&gt;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;Container: $container&lt;br/&gt;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$localfile</span> <span class="sy0">=</span> <span class="re1">$_FILES</span><span class="br0">&#91;</span><span class="st0">&#39;upload&#39;</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#39;tmp_name&#39;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$filename</span> <span class="sy0">=</span> <span class="re1">$_FILES</span><span class="br0">&#91;</span><span class="st0">&#39;upload&#39;</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#39;name&#39;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Print some information about the file</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;Local: $localfile&lt;br/&gt;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;File : $filename&lt;br/&gt;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">ob_flush</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Connect to Rackspace</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$auth</span> <span class="sy0">=</span> <span class="kw2">new</span> CF_Authentication<span class="br0">&#40;</span><span class="re1">$username</span><span class="sy0">,</span> <span class="re1">$key</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$auth</span><span class="sy0">-&gt;</span><span class="me1">authenticate</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$conn</span> <span class="sy0">=</span> <span class="kw2">new</span> CF_Connection<span class="br0">&#40;</span><span class="re1">$auth</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Get the container we want to use</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$container</span> <span class="sy0">=</span> <span class="re1">$conn</span><span class="sy0">-&gt;</span><span class="me1">create_container</span><span class="br0">&#40;</span><span class="re1">$container</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// store file information</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">ob_flush</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// upload file to Rackspace</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$object</span> <span class="sy0">=</span> <span class="re1">$container</span><span class="sy0">-&gt;</span><span class="me1">create_object</span><span class="br0">&#40;</span><span class="re1">$filename</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$object</span><span class="sy0">-&gt;</span><span class="me1">load_from_filename</span><span class="br0">&#40;</span><span class="re1">$localfile</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$uri</span> <span class="sy0">=</span> <span class="re1">$container</span><span class="sy0">-&gt;</span><span class="me1">make_public</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">print</span> <span class="st0">&quot;Your URL is: &quot;</span> <span class="sy0">.</span> <span class="re1">$object</span><span class="sy0">-&gt;</span><span class="me1">public_uri</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">ob_end_flush</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>The important part is on line 46 that contains &#8220;$object->public_uri();&#8221;. That is function in the API binding that returns the objects URL.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.collazo.ws/2011/08/30/uploading-to-rackspace-cloud-files-with-php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Rackspace DNSaaS with curl (part 1)</title>
		<link>http://www.collazo.ws/2011/07/08/using-rackspace-dnsaas-with-curl-part-1</link>
		<comments>http://www.collazo.ws/2011/07/08/using-rackspace-dnsaas-with-curl-part-1#comments</comments>
		<pubDate>Fri, 08 Jul 2011 20:35:02 +0000</pubDate>
		<dc:creator>robert</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Rackspace]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[dnsaas]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[rackspace]]></category>

		<guid isPermaLink="false">http://www.collazo.ws/?p=1074</guid>
		<description><![CDATA[<a href="http://www.collazo.ws/2011/07/08/using-rackspace-dnsaas-with-curl-part-1" title="Using Rackspace DNSaaS with curl (part 1)"></a>With the release of Rackspace DNSaaS (blog post here), I thought I would put together some examples of using curl with the service. With this release, you now have programmatic access to DNS via the API where you can set &#8230;<p class="read-more"><a href="http://www.collazo.ws/2011/07/08/using-rackspace-dnsaas-with-curl-part-1">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.collazo.ws/2011/07/08/using-rackspace-dnsaas-with-curl-part-1" title="Using Rackspace DNSaaS with curl (part 1)"></a><p>With the release of <a target="_blank" href="http://www.rackspace.com/cloud/cloud_hosting_products/dns/" title="Rackspace DNSaaS" target="_blank">Rackspace DNSaaS</a> (blog post <a target="_blank" href="http://www.rackspace.com/cloud/blog/2011/07/07/rackspace-cloud-dns-beta-now-available-for-us-uk-cloud-customers/" title="Rackspace Blog Post about DNSaaS" target="_blank">here</a>), I thought I would put together some examples of using curl with the service. With this release, you now have programmatic access to DNS via the <a target="_blank" href="http://docs.rackspace.com/api/" title="Rackspace API documentation" target="_blank">API</a> where you can set TTLs, create and delete various record types, and create and delete domains.<br />
<span id="more-1074"></span></p>
<h3>Authentication</h3>
<p>First, you&#8217;ll have to authenticate. To do this, you will need your API key and username.</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ curl -D &#8211; -H <span class="st0">&quot;X-Auth-Key: yourAPIKey&quot;</span> -H <span class="st0">&quot;X-Auth-User: yourUsername&quot;</span> https:<span class="sy0">//</span>auth.api.rackspacecloud.com<span class="sy0">/</span>v1<span class="nu0">.0</span></div>
</li>
</ol>
</div>
<p>You should receive the following response:</p>
<pre class="qoate-code">
HTTP/1.1 204 No Content
Server: Apache/2.2.3 (Mosso Engineering)
X-Storage-Url: https://storage101.dfw1.clouddrive.com/v1/yourAccountHash
Content-Type: application/octet-stream
Date: Date and Time
X-Auth-Token: yourAuthToken
X-Storage-Token: yourStorageToken
X-Server-Management-Url: https://servers.api.rackspacecloud.com/v1.0/yourAccountNumber
Connection: Keep-Alive
X-CDN-Management-Url: https://cdn1.clouddrive.com/v1/yourAccountHash
Content-Length: 0
</pre>
<h3>Listing Domain Information</h3>
<p>To see a list of your current domains, run the following command. Don&#8217;t forget to replace your auth token and account number.</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ curl -X GET -H <span class="st0">&quot;X-Auth-Token: yourAuthToken&quot;</span> -H <span class="st0">&quot;Accept: application/xml&quot;</span> https:<span class="sy0">//</span>dns.api.rackspacecloud.com<span class="sy0">/</span>v1<span class="nu0">.0</span><span class="sy0">/</span>yourAccountNumber<span class="sy0">/</span>domains</div>
</li>
</ol>
</div>
<p>Your output will be XML formatted and look like:</p>
<pre class="qoate-code">
&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;
&lt;domains xmlns="http://docs.rackspacecloud.com/dns/api/v1.0" xmlns:ns2="http://www.w3.org/2005/Atom" xmlns:ns3="http://docs.rackspacecloud.com/dns/api/management/v1.0" totalEntries="2"&gt;
    &lt;domain id="1697941" accountId="yourAccountNumber" name="collazo.ws" updated="2011-06-28T04:18:17Z" created="2009-12-11T01:01:26Z" /&gt;
    &lt;domain id="4062964" accountId="yourAccountNumber" name="deployitron.com" updated="2011-03-19T08:10:31Z" created="2011-01-21T23:24:44Z" /&gt;
&lt;/domains&gt;
</pre>
<p>To see the same thing formatted as JSON output, run the following:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ curl -X GET -H <span class="st0">&quot;X-Auth-Token: yourAuthToken&quot;</span> -H <span class="st0">&quot;Accept: application/json&quot;</span> https:<span class="sy0">//</span>dns.api.rackspacecloud.com<span class="sy0">/</span>v1<span class="nu0">.0</span><span class="sy0">/</span>yourAccountNumber<span class="sy0">/</span>domains</div>
</li>
</ol>
</div>
<pre class="qoate-code">
{
   "domains":[
      {
         "name":"collazo.ws",
         "id":1697941,
         "accountId":yourAccountNumber,
         "updated":"2011-06-28T04:18:17.000+0000",
         "created":"2009-12-11T01:01:26.000+0000"
      },
      {
         "name":"deployitron.com",
         "id":4062964,
         "accountId":yourAccountNumber,
         "updated":"2011-03-19T08:10:31.000+0000",
         "created":"2011-01-21T23:24:44.000+0000"
      }
   ],
   "totalEntries":2
}
</pre>
<p>To get details about a particular domain, you&#8217;ll enter the following:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ curl -X GET -H <span class="st0">&quot;X-Auth-Token: yourAuthToken&quot;</span> -H <span class="st0">&quot;Accept: application/xml&quot;</span> https:<span class="sy0">//</span>dns.api.rackspacecloud.com<span class="sy0">/</span>v1<span class="nu0">.0</span><span class="sy0">/</span>yourAccountNumber<span class="sy0">/</span>domains<span class="sy0">/</span><span class="nu0">4062964</span> <span class="co0"># &lt;- make sure you replace this with your domain ID</span></div>
</li>
</ol>
</div>
<p>This will output the following in XML format:</p>
<pre class="qoate-code">
&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;
&lt;domain xmlns="http://docs.rackspacecloud.com/dns/api/v1.0" xmlns:ns2="http://www.w3.org/2005/Atom" xmlns:ns3="http://docs.rackspacecloud.com/dns/api/management/v1.0" id="4062964" accountId="yourAccountNumber" name="deployitron.com" ttl="3600" emailAddress="ipadmin@stabletransit.com" updated="2011-03-19T08:10:31Z" created="2011-01-21T23:24:44Z"&gt;
    &lt;nameservers&gt;
        &lt;nameserver name="ns.rackspace.com" /&gt;
        &lt;nameserver name="ns1.rackspace.com" /&gt;
    &lt;/nameservers&gt;
    &lt;recordsList totalEntries="5"&gt;
        &lt;record id="A-1234567" type="A" name="deployitron.com" data="174.143.174.233" ttl="3600" updated="2011-01-22T11:28:10Z" created="2011-01-22T11:28:10Z" /&gt;
        &lt;record id="NS-2345678" type="NS" name="deployitron.com" data="dns1.stabletransit.com" ttl="3600" updated="2011-01-21T23:24:44Z" created="2011-01-21T23:24:44Z" /&gt;
        &lt;record id="NS-2345680" type="NS" name="deployitron.com" data="dns2.stabletransit.com" ttl="3600" updated="2011-01-21T23:24:44Z" created="2011-01-21T23:24:44Z" /&gt;
        &lt;record id="CNAME-4567890" type="CNAME" name="www.deployitron.com" data="deployitron.com" ttl="3600" updated="2011-01-22T11:30:35Z" created="2011-01-22T11:30:35Z" /&gt;
        &lt;record id="CNAME-5678901" type="CNAME" name="www2.deployitron.com" data="deployitron.com" ttl="600" updated="2011-03-19T08:10:31Z" created="2011-03-19T08:10:31Z" /&gt;
    &lt;/recordsList&gt;
&lt;/domain&gt;
</pre>
<p>To get the same thing JSON formatted:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ curl -X GET -H <span class="st0">&quot;X-Auth-Token: yourAuthToken&quot;</span> -H <span class="st0">&quot;Accept: application/json&quot;</span> https:<span class="sy0">//</span>dns.api.rackspacecloud.com<span class="sy0">/</span>v1<span class="nu0">.0</span><span class="sy0">/</span>yourAccountNumber<span class="sy0">/</span>domains<span class="sy0">/</span><span class="nu0">4062964</span></div>
</li>
</ol>
</div>
<pre class="qoate-code">
{
   "name":"deployitron.com",
   "id":4062964,
   "accountId":yourAccountNumber,
   "nameservers":[
      {
         "name":"ns.rackspace.com"
      },
      {
         "name":"ns1.rackspace.com"
      }
   ],
   "updated":"2011-03-19T08:10:31.000+0000",
   "ttl":3600,
   "recordsList":{
      "records":[
         {
            "name":"deployitron.com",
            "id":"A-1234567",
            "type":"A",
            "data":"174.143.174.233",
            "updated":"2011-01-22T11:28:10.000+0000",
            "ttl":3600,
            "created":"2011-01-22T11:28:10.000+0000"
         },
         {
            "name":"deployitron.com",
            "id":"NS-2345678",
            "type":"NS",
            "data":"dns1.stabletransit.com",
            "updated":"2011-01-21T23:24:44.000+0000",
            "ttl":3600,
            "created":"2011-01-21T23:24:44.000+0000"
         },
         {
            "name":"deployitron.com",
            "id":"NS-2345680",
            "type":"NS",
            "data":"dns2.stabletransit.com",
            "updated":"2011-01-21T23:24:44.000+0000",
            "ttl":3600,
            "created":"2011-01-21T23:24:44.000+0000"
         },
         {
            "name":"www.deployitron.com",
            "id":"CNAME-4567890",
            "type":"CNAME",
            "data":"deployitron.com",
            "updated":"2011-01-22T11:30:35.000+0000",
            "ttl":3600,
            "created":"2011-01-22T11:30:35.000+0000"
         },
         {
            "name":"www2.deployitron.com",
            "id":"CNAME-5678901",
            "type":"CNAME",
            "data":"deployitron.com",
            "updated":"2011-03-19T08:10:31.000+0000",
            "ttl":600,
            "created":"2011-03-19T08:10:31.000+0000"
         }
      ],
      "totalEntries":5
   },
   "emailAddress":"ipadmin@stabletransit.com",
   "created":"2011-01-21T23:24:44.000+0000"
}
</pre>
<h3>Creating Domains</h3>
<p>To create a domain, we issue the following JSON formatted command:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ curl -D &#8211; -X POST -d <span class="st0">&#39;{ &quot;domains&quot;:[ { &quot;name&quot;:&quot;aeVo8AiHeesh.ws&quot;, &quot;emailAddress&quot;:&quot;robert@aeVo8AiHeesh.ws&quot;, &quot;comment&quot;:&quot;This is the first domain created via API&quot;, &quot;recordsList&quot;: { &quot;records&quot;:[ { &quot;ttl&quot;:600, &quot;data&quot;:&quot;127.0.0.1&quot;, &quot;name&quot;:&quot;aeVo8AiHeesh.ws&quot;, &quot;type&quot;:&quot;A&quot; },{ &quot;priority&quot;: 10, &quot;ttl&quot;:86400, &quot;data&quot;:&quot;mail.aeVo8AiHeesh.ws&quot;, &quot;name&quot;:&quot;aeVo8AiHeesh.ws&quot;, &quot;type&quot;:&quot;MX&quot; },{ &quot;ttl&quot;:300, &quot;data&quot;:&quot;v=spf1 mx -all&quot;, &quot;name&quot;:&quot;aeVo8AiHeesh.ws&quot;, &quot;type&quot;:&quot;TXT&quot; } ] } } ] }&#39;</span> -H <span class="st0">&quot;X-Auth-Token: yourAuthToken&quot;</span> -H <span class="st0">&quot;Content-Type: application/json&quot;</span> https:<span class="sy0">//</span>dns.api.rackspacecloud.com<span class="sy0">/</span>v1<span class="nu0">.0</span><span class="sy0">/</span>yourAccountNumber<span class="sy0">/</span>domains</div>
</li>
</ol>
</div>
<p>And the following is returned:</p>
<pre class="qoate-code">
HTTP/1.1 202 Accepted
X-API-VERSION: 1.0.8
Content-Type: application/json
Date: Fri, 08 Jul 2011 15:18:12 GMT
Content-Length: 155
Server: Jetty(7.3.1.v20110307)

{"jobId":"yourJobID","callbackUrl":"https://dns.api.rackspacecloud.com/v1.0/yourAccountNumber/status/yourJobID"}
</pre>
<p>It&#8217;s important to note your job ID so that you can check the status of your job by issuing the following command:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ curl -X GET -H <span class="st0">&quot;X-Auth-Token: yourAuthToken&quot;</span> -H <span class="st0">&quot;Accept: application/json&quot;</span> https:<span class="sy0">//</span>dns.api.rackspacecloud.com<span class="sy0">/</span>v1<span class="nu0">.0</span><span class="sy0">/</span>yourAccountNumber<span class="sy0">/</span>status<span class="sy0">/</span>yourJobID</div>
</li>
</ol>
</div>
<p>If your job completed successfully, you should see something similar to the following:</p>
<pre class="qoate-code">
{"domains":[{"name":"aevo8aiheesh.ws","id":2841222,"comment":"This is the first domain created via API","accountId":yourAccountNumber,"nameservers":[{"name":"ns.rackspace.com"},{"name":"ns1.rackspace.com"}],"updated":"2011-07-08T15:21:46.000+0000","ttl":3600,"recordsList":{"records":[{"name":"aevo8aiheesh.ws","id":"A-7088731","type":"A","data":"127.0.0.1","updated":"2011-07-08T15:21:47.000+0000","ttl":600,"created":"2011-07-08T15:21:47.000+0000"},{"name":"aevo8aiheesh.ws","id":"MX-3272903","priority":10,"type":"MX","data":"mail.aeVo8AiHeesh.ws","updated":"2011-07-08T15:21:48.000+0000","ttl":86400,"created":"2011-07-08T15:21:48.000+0000"},{"name":"aevo8aiheesh.ws","id":"TXT-243256","type":"TXT","data":"v=spf1 mx -all","updated":"2011-07-08T15:21:49.000+0000","ttl":300,"created":"2011-07-08T15:21:49.000+0000"}]},"emailAddress":"robert@aeVo8AiHeesh.ws","created":"2011-07-08T15:21:45.000+0000"}]}
</pre>
<p>I see that it was created and I can verify via dig by running:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ dig aevo8aiheesh.ws <span class="sy0">@</span>ns.rackspace.com any</div>
</li>
</ol>
</div>
<p>Which returns:</p>
<pre class="qoate-code">
; &lt;&lt;&gt;&gt; DiG 9.6.0-APPLE-P2 &lt;&lt;&gt;&gt; aevo8aiheesh.ws @ns.rackspace.com any
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 40475
;; flags: qr aa rd; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 2
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;aevo8aiheesh.ws.               IN      ANY

;; ANSWER SECTION:
aevo8aiheesh.ws.        3600    IN      SOA     ns1.rackspace.com. robert.aevo8aiheesh.ws. 1310138509 3600 3600 3600 3600
aevo8aiheesh.ws.        86400   IN      MX      10 mail.aevo8aiheesh.ws.
aevo8aiheesh.ws.        3600    IN      NS      dns1.stabletransit.com.
aevo8aiheesh.ws.        3600    IN      NS      dns2.stabletransit.com.
aevo8aiheesh.ws.        300     IN      TXT     "v=spf1 mx -all"
aevo8aiheesh.ws.        600     IN      A       127.0.0.1

;; ADDITIONAL SECTION:
dns1.stabletransit.com. 86400   IN      A       69.20.95.4
dns2.stabletransit.com. 86400   IN      A       65.61.188.4

;; Query time: 35 msec
;; SERVER: 69.20.95.4#53(69.20.95.4)
;; WHEN: Fri Jul  8 10:45:38 2011
;; MSG SIZE  rcvd: 241
</pre>
<p>We can accomplish the same thing via XML by running the following:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ curl -D - -X POST -d <span class="st0">&#39;&lt;domains xmlns=&quot;http://docs.rackspacecloud.com/dns/api/v1.0&quot;&gt;&lt;domain name=&quot;paingeez7uec.com&quot; ttl=&quot;5600&quot; emailAddress=&quot;robert@paingeez7uec.com&quot; comment=&quot;This is the second domain created via API&quot;&gt;&lt;recordsList&gt;&lt;record type=&quot;A&quot; data=&quot;127.0.0.1&quot; name=&quot;paingeez7uec.com&quot;/&gt;&lt;record type=&quot;MX&quot; data=&quot;mail.paingeez7uec.com&quot; priority=&quot;10&quot; ttl=&quot;5000&quot; name=&quot;paingeez7uec.com&quot;/&gt;&lt;record type=&quot;TXT&quot; data=&quot;v=spf1 mx -all&quot; name=&quot;paingeez7uec.com&quot; ttl=&quot;600&quot;/&gt;&lt;/recordsList&gt;&lt;/domain&gt;&lt;/domains&gt;&#39;</span> -H <span class="st0">&quot;X-Auth-Token: yourAuthToken&quot;</span> -H <span class="st0">&quot;Content-Type: application/xml&quot;</span> https:<span class="sy0">//</span>dns.api.rackspacecloud.com<span class="sy0">/</span>v1<span class="nu0">.0</span><span class="sy0">/</span>yourAccountID<span class="sy0">/</span>domains</div>
</li>
</ol>
</div>
<p>Which outputs:</p>
<pre class="qoate-code">
HTTP/1.1 202 Accepted
X-API-VERSION: 1.0.8
Content-Type: application/json
Date: Fri, 08 Jul 2011 19:35:22 GMT
Content-Length: 155
Server: Jetty(7.3.1.v20110307)

{"jobId":"yourJobID","callbackUrl":"https://dns.api.rackspacecloud.com/v1.0/yourAccountNumber/status/yourJobID"}
</pre>
<p>Checking the status:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ curl -X GET -H <span class="st0">&quot;X-Auth-Token: yourAuthToken&quot;</span> -H <span class="st0">&quot;Accept: application/xml&quot;</span> https:<span class="sy0">//</span>dns.api.rackspacecloud.com<span class="sy0">/</span>v1<span class="nu0">.0</span><span class="sy0">/</span>yourAccountID<span class="sy0">/</span>status<span class="sy0">/</span>yourJobID</div>
</li>
</ol>
</div>
<p>Which returns:</p>
<pre class="qoate-code">
&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;&lt;domains xmlns="http://docs.rackspacecloud.com/dns/api/v1.0" xmlns:ns2="http://www.w3.org/2005/Atom" xmlns:ns3="http://docs.rackspacecloud.com/dns/api/management/v1.0"&gt;&lt;domain id="2841642" accountId="yourAccountID" name="paingeez7uec.com" ttl="5600" emailAddress="robert@paingeez7uec.com" updated="2011-07-08T19:35:23Z" created="2011-07-08T19:35:23Z" comment="This is the second domain created via API"&gt;&lt;nameservers&gt;&lt;nameserver name="ns.rackspace.com"/&gt;&lt;nameserver name="ns1.rackspace.com"/&gt;&lt;/nameservers&gt;&lt;recordsList&gt;&lt;record id="A-7089765" type="A" name="paingeez7uec.com" data="127.0.0.1" ttl="5600" updated="2011-07-08T19:35:24Z" created="2011-07-08T19:35:24Z"/&gt;&lt;record id="MX-3274128" type="MX" name="paingeez7uec.com" data="mail.paingeez7uec.com" ttl="5000" priority="10" updated="2011-07-08T19:35:25Z" created="2011-07-08T19:35:25Z"/&gt;&lt;record id="TXT-243385" type="TXT" name="paingeez7uec.com" data="v=spf1 mx -all" ttl="600" updated="2011-07-08T19:35:26Z" created="2011-07-08T19:35:26Z"/&gt;&lt;/recordsList&gt;&lt;/domain&gt;&lt;/domains&gt;
</pre>
<p>To verify the domain exists via dig:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ dig paingeez7uec.com <span class="sy0">@</span>ns.rackspace.com any</div>
</li>
</ol>
</div>
<p>Which outputs:</p>
<pre class="qoate-code">
; &lt;&lt;&gt;&gt; DiG 9.6.0-APPLE-P2 &lt;&lt;&gt;&gt; paingeez7uec.com @ns.rackspace.com any
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 45478
;; flags: qr aa rd; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 2
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;paingeez7uec.com.              IN      ANY

;; ANSWER SECTION:
paingeez7uec.com.       5600    IN      SOA     ns1.rackspace.com. robert.paingeez7uec.com. 1310153726 5600 5600 5600 5600
paingeez7uec.com.       5000    IN      MX      10 mail.paingeez7uec.com.
paingeez7uec.com.       5600    IN      NS      dns1.stabletransit.com.
paingeez7uec.com.       5600    IN      NS      dns2.stabletransit.com.
paingeez7uec.com.       600     IN      TXT     "v=spf1 mx -all"
paingeez7uec.com.       5600    IN      A       127.0.0.1

;; ADDITIONAL SECTION:
dns1.stabletransit.com. 86400   IN      A       69.20.95.4
dns2.stabletransit.com. 86400   IN      A       65.61.188.4

;; Query time: 42 msec
;; SERVER: 69.20.95.4#53(69.20.95.4)
;; WHEN: Fri Jul  8 14:49:55 2011
;; MSG SIZE  rcvd: 239
</pre>
<p>Now you can create domains in using both JSON and XML formatted responses.</p>
<h3>Deleting Domains</h3>
<p>To delete a domain using curl follow these simple steps. You will need your account ID (yourAccountID in previous examples) and the domain ID from a domain list.</p>
<p>JSON:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ curl -X DELETE -H <span class="st0">&quot;X-Auth-Token: yourAuthToken&quot;</span> -H <span class="st0">&quot;Accept: application/json&quot;</span> https:<span class="sy0">//</span>dns.api.rackspacecloud.com<span class="sy0">/</span>v1<span class="nu0">.0</span><span class="sy0">/</span>yourAccountID<span class="sy0">/</span>domains<span class="sy0">/</span><span class="nu0">2841222</span></div>
</li>
</ol>
</div>
<pre class="qoate-code">
{"jobId":"yourJobID","callbackUrl":"https://dns.api.rackspacecloud.com/v1.0/yourAccountID/status/yourJobID"}
</pre>
<p>XML:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ curl -X DELETE -H <span class="st0">&quot;X-Auth-Token: yourAuthToken&quot;</span> -H <span class="st0">&quot;Accept: application/xml&quot;</span> https:<span class="sy0">//</span>dns.api.rackspacecloud.com<span class="sy0">/</span>v1<span class="nu0">.0</span><span class="sy0">/</span>yourAccountID<span class="sy0">/</span>domains<span class="sy0">/</span><span class="nu0">2841642</span></div>
</li>
</ol>
</div>
<pre class="qoate-code">
&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;&lt;asyncResponse xmlns="http://docs.rackspacecloud.com/dns/api/v1.0"&gt;&lt;jobId&gt;yourJobID&lt;/jobId&gt;&lt;callbackUrl&gt;https://dns.api.rackspacecloud.com/v1.0/yourAccountID/status/yourJobID&lt;/callbackUrl&gt;&lt;/asyncResponse&gt;
</pre>
<p>Stay tuned for part 2 where I will show how to modify domains, and add/delete/modify records.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.collazo.ws/2011/07/08/using-rackspace-dnsaas-with-curl-part-1/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Edge Purge Content from Rackspace Cloud Files via curl</title>
		<link>http://www.collazo.ws/2011/06/29/edge-purge-content-from-rackspace-cloud-files-via-curl</link>
		<comments>http://www.collazo.ws/2011/06/29/edge-purge-content-from-rackspace-cloud-files-via-curl#comments</comments>
		<pubDate>Wed, 29 Jun 2011 21:10:16 +0000</pubDate>
		<dc:creator>robert</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[rackspace]]></category>

		<guid isPermaLink="false">http://www.collazo.ws/?p=1052</guid>
		<description><![CDATA[<a href="http://www.collazo.ws/2011/06/29/edge-purge-content-from-rackspace-cloud-files-via-curl" title="Edge Purge Content from Rackspace Cloud Files via curl"></a>When the Rackspace Cloud Files product received Edge Purge functionality via the API, I didn&#8217;t give it much thought as I didn&#8217;t use the CDN functionality for any of my personal projects. That changed recently and I started doing some &#8230;<p class="read-more"><a href="http://www.collazo.ws/2011/06/29/edge-purge-content-from-rackspace-cloud-files-via-curl">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.collazo.ws/2011/06/29/edge-purge-content-from-rackspace-cloud-files-via-curl" title="Edge Purge Content from Rackspace Cloud Files via curl"></a><p>When the Rackspace Cloud Files product received <a target="_blank" href="http://www.rackspace.com/cloud/blog/2011/02/25/cloud-files-cdn-gets-edge-purge/">Edge Purge functionality via the API</a>, I didn&#8217;t give it much thought as I didn&#8217;t use the CDN functionality for any of my personal projects. That changed recently and I started doing some work with the CDN (powered by <a target="_blank" href="http://www.akamai.com/">Akamai</a>). All was fine until I realized I had set the TTL for the objects too high for my testing and wasn&#8217;t receiving the right content. Below you&#8217;ll find the appropriate methods for doing an edge purge of an object and container via curl using the API.<br />
<span id="more-1052"></span><br />
First, you&#8217;ll need to authenticate using your API key and username.</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ curl -D &#8211; -H <span class="st0">&quot;X-Auth-Key: yourAPIkey&quot;</span> -H <span class="st0">&quot;X-Auth-User: yourUsername&quot;</span> https:<span class="sy0">//</span>auth.api.rackspacecloud.com<span class="sy0">/</span>v1<span class="nu0">.0</span></div>
</li>
</ol>
</div>
<p>You should receive the following:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">HTTP<span class="sy0">/</span><span class="nu0">1.1</span> <span class="nu0">204</span> No Content</div>
</li>
<li class="li1">
<div class="de1">Server: Apache<span class="sy0">/</span><span class="nu0">2.2</span><span class="nu0">.13</span> <span class="br0">&#40;</span>Red Hat<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">X-Storage-Url: https:<span class="sy0">//</span>storage.clouddrive.com<span class="sy0">/</span>v1<span class="sy0">/</span>yourAccountHash</div>
</li>
<li class="li1">
<div class="de1">Content-Type: application<span class="sy0">/</span>octet-stream</div>
</li>
<li class="li1">
<div class="de1">Date: Date <span class="sy0">&amp;</span> Time</div>
</li>
<li class="li1">
<div class="de1">X-Auth-Token: yourAuthToken</div>
</li>
<li class="li1">
<div class="de1">X-Storage-Token: yourStorageToken</div>
</li>
<li class="li1">
<div class="de1">X-Server-Management-Url: https:<span class="sy0">//</span>servers.api.rackspacecloud.com<span class="sy0">/</span>v1<span class="nu0">.0</span><span class="sy0">/</span>yourAccountNumber</div>
</li>
<li class="li1">
<div class="de1">Connection: Keep-Alive</div>
</li>
<li class="li1">
<div class="de1">X-CDN-Management-Url: https:<span class="sy0">//</span>cdn1.clouddrive.com<span class="sy0">/</span>v1<span class="sy0">/</span>yourAccountHash</div>
</li>
<li class="li1">
<div class="de1">Content-Length: <span class="nu0">0</span></div>
</li>
</ol>
</div>
<p>You now have the information you need to do the Edge Purge from the Akamai fronted CDN. To delete an object, you&#8217;ll need the &#8220;X-Auth-Token&#8221; and &#8220;X-CDN-Management-Url&#8221;.</p>
<p>To do an Edge Purge of the given object “foo.txt” in the container “bar”, send the following via curl:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ curl -D &#8211; -X DELETE -H <span class="st0">&quot;X-Auth-Token: yourAuthToken&quot;</span> -H <span class="st0">&quot;X-Purge-Email: your@email.address&quot;</span> &nbsp;https:<span class="sy0">//</span>cdn1.clouddrive.com<span class="sy0">/</span>v1<span class="sy0">/</span>yourAccountHash<span class="sy0">/</span>bar<span class="sy0">/</span>foo.txt</div>
</li>
</ol>
</div>
<p>You&#8217;ll receive the following in response as well as an email to your@email.address.</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">HTTP<span class="sy0">/</span><span class="nu0">1.1</span> <span class="nu0">204</span> No Content</div>
</li>
<li class="li1">
<div class="de1">Date: Date <span class="sy0">&amp;</span> Time</div>
</li>
<li class="li1">
<div class="de1">Server: Apache</div>
</li>
<li class="li1">
<div class="de1">X-Akam-Est-Time: <span class="nu0">420</span></div>
</li>
<li class="li1">
<div class="de1">X-Akam-Result-Code: <span class="nu0">100</span></div>
</li>
<li class="li1">
<div class="de1">Content-Length: <span class="nu0">0</span></div>
</li>
<li class="li1">
<div class="de1">Connection: close</div>
</li>
<li class="li1">
<div class="de1">Content-Type: text<span class="sy0">/</span>plain; <span class="re2">charset=</span>UTF<span class="nu0">-8</span></div>
</li>
</ol>
</div>
<p>To do an Edge Purge of the container &#8220;bar&#8221;, send the following via curl:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">curl -D &#8211; -H <span class="st0">&quot;X-Auth-Token: yourAuthToken&quot;</span> -H <span class="st0">&quot;X-Purge-Email: your@email.address&quot;</span> -X DELETE https:<span class="sy0">//</span>cdn1.clouddrive.com<span class="sy0">/</span>v1<span class="sy0">/</span>yourAccountHash<span class="sy0">/</span>bar<span class="sy0">/</span></div>
</li>
</ol>
</div>
<p>You should receive a response identical to the one you did for object Edge Purge.</p>
<p>That&#8217;s it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.collazo.ws/2011/06/29/edge-purge-content-from-rackspace-cloud-files-via-curl/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Putting subject &amp; from in mail from command line</title>
		<link>http://www.collazo.ws/2007/07/13/putting-subject-from-in-mail-from-command-line</link>
		<comments>http://www.collazo.ws/2007/07/13/putting-subject-from-in-mail-from-command-line#comments</comments>
		<pubDate>Fri, 13 Jul 2007 19:56:04 +0000</pubDate>
		<dc:creator>robert</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[E-Mail]]></category>

		<guid isPermaLink="false">http://www.collazo.ws/2007/07/13/putting-subject-from-in-mail-from-command-line/</guid>
		<description><![CDATA[<a href="http://www.collazo.ws/2007/07/13/putting-subject-from-in-mail-from-command-line" title="Putting subject &amp; from in mail from command line"></a>I couldn&#8217;t figure out how to send an email with both the subject and from set from the command line. mail -s &#34;my subject&#34; example@foo.bar worked with mail but would only set the subject. sendmail -f &#34;sender@foo.bar&#34; receiver@foo.bar worked with &#8230;<p class="read-more"><a href="http://www.collazo.ws/2007/07/13/putting-subject-from-in-mail-from-command-line">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.collazo.ws/2007/07/13/putting-subject-from-in-mail-from-command-line" title="Putting subject &amp; from in mail from command line"></a><p>I couldn&#8217;t figure out how to send an email with both the subject and from set from the command line.</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">mail -s <span class="st0">&quot;my subject&quot;</span> example<span class="sy0">@</span>foo.bar</div>
</li>
</ol>
</div>
<p>worked with mail but would only set the subject.</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">sendmail -f <span class="st0">&quot;sender@foo.bar&quot;</span> receiver<span class="sy0">@</span>foo.bar</div>
</li>
</ol>
</div>
<p>worked with sendmail but would only set the &#8220;from&#8221;.  With a little help from Google I put this together:<br />
<span id="more-6"></span></p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="co0">#!/bin/bash</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">HOST=</span>`<span class="kw2">hostname</span> <span class="sy0">|</span> <span class="kw2">awk</span> <span class="st0">&#39;BEGIN { FS=&quot;.&quot; } ; {print $1}&#39;</span>`</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">DOMAIN=</span>`<span class="kw2">hostname</span>`</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">PASSWORD=</span><span class="st0">&#39;mypassword&#39;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">BODY=</span>`<span class="kw2">tail</span> -n <span class="nu0">40</span> <span class="sy0">/</span>var<span class="sy0">/</span>log<span class="sy0">/</span>maillog`</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">FROM=</span><span class="st0">&quot;$HOST@$DOMAIN&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">TO=</span><span class="st0">&#39;receiver@foo.bar&#39;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">SUBJECT=</span><span class="st0">&quot;Last 40 lines of maillog&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;From: $FROM&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;Subject: $SUBJECT&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;To: $TO&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;$BODY&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span> <span class="sy0">|</span> sendmail -f <span class="re1">$FROM</span> <span class="re1">$TO</span></div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.collazo.ws/2007/07/13/putting-subject-from-in-mail-from-command-line/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Postfix mailq search</title>
		<link>http://www.collazo.ws/2007/07/12/postfix-mailq-search</link>
		<comments>http://www.collazo.ws/2007/07/12/postfix-mailq-search#comments</comments>
		<pubDate>Thu, 12 Jul 2007 14:21:02 +0000</pubDate>
		<dc:creator>robert</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[E-Mail]]></category>
		<category><![CDATA[Postfix]]></category>

		<guid isPermaLink="false">http://www.collazo.ws/2007/07/12/postfix-mailq-search/</guid>
		<description><![CDATA[<a href="http://www.collazo.ws/2007/07/12/postfix-mailq-search" title="Postfix mailq search"></a>I couldn&#8217;t find a script to search the Postfix mail queue so I wrote one. It&#8217;s a bash script and can be downloaded here (or just copy and paste it to file of your choice). I call it ssubject.sh. It &#8230;<p class="read-more"><a href="http://www.collazo.ws/2007/07/12/postfix-mailq-search">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.collazo.ws/2007/07/12/postfix-mailq-search" title="Postfix mailq search"></a><p>I couldn&#8217;t find a script to search the Postfix mail queue so I wrote one.  It&#8217;s a bash script and can be downloaded <a target="_blank" href="seperate/ssubject.sh" title="ssubject.sh" target="_blank">here</a> (or just copy and paste it to file of your choice).  I call it <a target="_blank" href="seperate/ssubject.sh" title="ssubject.sh" target="_blank">ssubject.sh</a>.  It ends up just spitting out the queue id&#8217;s of messages that match.  Usage: &#8220;ssubject.sh &#8220;some words to look for&#8221;<br />
<span id="more-4"></span></p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="co0">#!/bin/bash</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">SUBJECT=</span>$<span class="nu0">1</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">/</span>usr<span class="sy0">/</span>sbin<span class="sy0">/</span>postqueue -p <span class="sy0">|</span> <span class="kw2">awk</span> <span class="br0">&#123;</span><span class="st0">&#39;print $1&#39;</span><span class="br0">&#125;</span> <span class="sy0">|</span> <span class="kw2">grep</span> -v <span class="br0">&#40;</span>host <span class="sy0">|</span> \\</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">grep</span> -v <span class="sy0">@</span> <span class="sy0">|</span> <span class="kw2">grep</span> -v <span class="br0">&#40;</span>delivery <span class="sy0">|</span> <span class="kw2">grep</span> -v <span class="br0">&#40;</span>Host <span class="sy0">|</span> <span class="kw2">grep</span> -v <span class="br0">&#40;</span>connect <span class="sy0">|</span> \\</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">grep</span> -v <span class="br0">&#40;</span>lost <span class="sy0">|</span> <span class="kw2">grep</span> -v <span class="br0">&#40;</span>conversation <span class="sy0">|</span> <span class="kw2">grep</span> -v -Queue <span class="sy0">|</span> \\</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">sed</span> <span class="st0">&#39;s/*//g&#39;</span> <span class="sy0">|</span> <span class="kw2">sed</span> <span class="st0">&#39;/^$/d&#39;</span> <span class="sy0">&gt;</span> <span class="sy0">/</span>tmp<span class="sy0">/</span>queue_ids.txt</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">cat</span> <span class="sy0">/</span>tmp<span class="sy0">/</span>queue_ids.txt <span class="sy0">|</span> <span class="kw1">while</span> <span class="kw2">read</span> line; <span class="kw1">do</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">sudo</span> <span class="sy0">/</span>usr<span class="sy0">/</span>sbin<span class="sy0">/</span>postcat -q <span class="re0">$<span class="br0">&#123;</span>line<span class="br0">&#125;</span><span class="sy0">|</span>> <span class="sy0">|</span> <span class="kw2">grep</span> <span class="st0">&quot;$SUBJECT&quot;</span> <span class="sy0">&gt;</span> <span class="sy0">/</span>dev<span class="sy0">/</span>null <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span> <span class="st0">&quot;$?&quot;</span> -eq <span class="st0">&quot;0&quot;</span> <span class="br0">&#93;</span>; <span class="kw1">then</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re0">$<span class="br0">&#123;</span>line<span class="br0">&#125;</span><span class="sy0">|</span>> ;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">fi</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">done</span></div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.collazo.ws/2007/07/12/postfix-mailq-search/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/

Page Caching using disk: enhanced
Database Caching 10/41 queries in 0.312 seconds using apc
Object Caching 798/849 objects using disk: basic
Content Delivery Network via Rackspace Cloud Files: cdn.collazo.ws

Served from: www.collazo.ws @ 2012-02-06 02:26:31 -->
